我有 2 个集合 col1 和 col2。我想从 col1 中选择记录在 col2 中不匹配。在 col1 中有 0 到 6,在 col2 中有 1 到 6 个数字,我想要 0 因为 0 在 col2 中不匹配。
两个集合的类型不同,在两个集合中都有一个字段 ID。
我正在使用 c# 4.0(Linq)。
我有 2 个集合 col1 和 col2。我想从 col1 中选择记录在 col2 中不匹配。在 col1 中有 0 到 6,在 col2 中有 1 到 6 个数字,我想要 0 因为 0 在 col2 中不匹配。
两个集合的类型不同,在两个集合中都有一个字段 ID。
我正在使用 c# 4.0(Linq)。
你需要的Except
方法:
var yourResult = col1.Except(col2);
如果您的两个集合不是同一类型,那么您将不得不进行更昂贵的O(nm)
搜索:
var selectedTwo = col2.Select(x => x.ID).ToHashSet();
var yourResult = col1.Where(n => !selectedTwo.Contains(n.ID));
在您的代码中的其他地方:
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
对于不同的收藏,你可以试试这个
var outputarray =
FirstList.Except(
(from first in FirstList
join second in SecondList
on first.id equals second.id
select first).ToList());
假设 ur 的类型collection
是string
thn
var resultCol = new List<string>();
col1.ToList().ForEach(item => {
if(!col2.Contains(item))
resultCol.Add(item);
});