2011-09-08 99 views
24

我有两个列表,我需要比较它们,并且只返回两个列表中不包含的项目列表。使用LINQ得到两个列表之间的差异

var listOfIds = new List<int> {1,2,4}; 

var persons = new ObservableCollection<Person> 
{ 
    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解决方案将是首选。

回答

28

您还可以使用拉姆达:

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