使用LINQ获取两个列表之间的差异

我有两个列表,我需要比较它们,只返回两个项目列表。

var listOfIds = new List {1,2,4}; var persons = new ObservableCollection { new Person {Id = 1, Name = "Person 1"}, new Person {Id = 2, Name = "Person 2"}, new Person {Id = 3, Name = "Person 3"}, new Person {Id = 4, Name = "Person 4"} }; 

在这个例子中, new Person {Id = 3, Name = "Person 3"}将是结果。 Linq解决方案将是首选。

不会为你工作

 var listOfIds = new List {1,2,4}; var query = from item in persons where !listOfIds .Contains( item.id ) select item; 

您可以查看更多详细信息: SQL到LINQ(案例7 – 使用IN和NOT IN子句过滤数据)

你也可以使用lambda:

 var query = persons.Where(item => !listOfIds.Contains(item.Id));