使用具有属性条件的except运算符

时间:2018-01-22 16:15:45

标签: linq

我有两个包含不同对象的列表。两个对象都有一个我需要比较的字符串属性名称。

我需要知道列表B中的哪些值未包含在列表B中,具体取决于name属性。

除了运营商是否适用于此案例? 什么是在Linq中实现这一目标的最佳方式?

1 个答案:

答案 0 :(得分:1)

Except运算符根据对象相等性删除项目。虽然你可以通过传递一个"相等比较器"来将你的场景变成Except。只注意Name属性,结果代码很难理解。

更好的方法是创建一组要排除的名称,并在查询中使用该名称:

var excludedNames = new HashSet<string>(listB.Select(item => item.Name));
var result = listA.Where(item => !excludedNames.Contains(item.Name)).ToList();