我有2个集合col1和col2。我希望col1中的选择记录在col2中不匹配。在col1中有0到6,在col2中有1到6个数字,我想要0,因为0在col2中不匹配。
两个集合都没有相同的类型,在两个集合中都有一个字段ID。
我正在使用c#4.0(Linq)。
答案 0 :(得分:4)
您需要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);
}
答案 1 :(得分:1)
对于不同的收藏,您可以试试这个
var outputarray =
FirstList.Except(
(from first in FirstList
join second in SecondList
on first.id equals second.id
select first).ToList());
答案 2 :(得分:0)
假设您的collection
类型为string
var resultCol = new List<string>();
col1.ToList().ForEach(item => {
if(!col2.Contains(item))
resultCol.Add(item);
});