基本上我有以下两个IEnumerable lists
List A = {"Personal", "Tech", "Social"}
List B = {"Personal", "Tech", "General"}
现在我想要实现的是,得到List A
和List B
之间的差异,在本例中是Social和General。
我还需要确定Social在List A
中是额外的,General在List B
中是额外的,以便相应地插入和删除。
我还可以有另一个场景
List A = {"Personal", "Tech"}
List B = {"Personal", "Tech", "General"}
在这种情况下,它将返回General"
如何使用LINQ
呢?
给你
var ListA = new List<string> {"Personal", "Tech", "Social"};
var ListB = new List<string> { "Personal", "Tech", "General" };
var insert = ListA.Except(ListB).ToList();
var delete = ListB.Except(ListA).ToList();
您可以使用List<T>.Except()
方法。
产生两个序列的集合差。
public static void Main(string[] args)
{
List<string> A = new List<string> { "Personal", "Tech", "Social" };
List<string> B = new List<string> { "Personal", "Tech", "General" };
var result = A.Except(B);
//Will print "Social"
foreach (var i in result)
{
Console.WriteLine(i);
}
}
这是DEMO
。
第二种情况;
public static void Main(string[] args)
{
List<string> A = new List<string> { "Personal", "Tech" };
List<string> B = new List<string> { "Personal", "Tech", "General"};
var result = B.Except(A);
foreach ( var i in result )
{
Console.WriteLine(i);
}
}
这是DEMO
listA.Except(listB)
将给出列表A中不在列表B中的所有项目。
使用Enumerable。除了
var result = list1.Except(list2).ToList();
var q = A.Intersect(B);//"Personal" , "Tech"
var r = B.Except(A);//"General"