我有两个包含不同对象的列表。两个对象都有一个我需要比较的字符串属性名称。
我需要知道列表B中的哪些值未包含在列表B中,具体取决于name属性。
除了运营商是否适用于此案例? 什么是在Linq中实现这一目标的最佳方式?
答案 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();