1

我有两个客户列表,list1 和 list2,具有 id、name 和 city 属性。我需要从 list1 中删除项目,如果它们在 list2 中存在相同的名称和城市。如何编写多参数选择的 linq 查询。

4

2 回答 2

11
list1.RemoveAll(c => list2.Any(c2 => c2.Name == c.Name && c2.City == c.City));
于 2012-08-31T01:23:19.273 回答
2

与使用两个布尔值编写任何条件相同 - 使用&&or ||。一个例子:

from x in list1
where list2.Any(y => y.Name == x.Name && y.City == x.City)
select x

请注意,“谓词”只是 a Func<MyType, bool>,所以只要你最后返回一个布尔值,你就可以在那里做一些非常时髦的事情。

当然,您必须在删除之前枚举IEnumerable( it),因为在枚举列表.ToList()您无法更改列表,但您可能知道(或者只是与上面的谓词一起使用)List.RemoveAll

于 2012-08-31T01:19:26.820 回答