如何从2个不同的列表中提取找到以下表达式的所有元素
List1.id = List2.id && List1.CategoryId = list2.CategoryId
以及如何通过提取主列表中缺少的元素进行逆运算
!(List1.id = List2.id && List1.CategoryId = list2.CategoryId)
最佳答案
因此,第一种情况是您的基本Join
操作,Linq支持此操作:
var matchingItems = from item1 in list1
join item2 in list2
on new{ item1.id, item1.CategoryId}
equals new{ item2.id, item2.CategoryId}
select new { item1, item2 };
对于第二种情况:
var idValues = list2.Select(item => new { item.id, item.CategoryId })
.ToHashSet();
var missingItems = list1.Where(item => !idValues.Contains(new { item.id, item.CategoryId }));
这是
ToHashSet
的定义:public static class Extensions
{
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
}
关于c# - Linq用于通过比较2个属性值从列表1中选择存在于列表2中的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14262341/