我有两个客户列表,list1 和 list2,具有 id、name 和 city 属性。我需要从 list1 中删除项目,如果它们在 list2 中存在相同的名称和城市。如何编写多参数选择的 linq 查询。
问问题
2042 次
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 回答