所以基本上我有以下2 IEnumerable lists
List A = {"Personal", "Tech", "Social"}
List B = {"Personal", "Tech", "General"}
现在我想要实现的是,在List A
和List B
之间取得区别,在本例中为社交和一般。
我还需要确定List A
中的社交是额外的,而List B
中常规是额外的,以便相应地插入和删除。
我还可以有另一个场景
List A = {"Personal", "Tech"}
List B = {"Personal", "Tech", "General"}
在这种情况下,它将返回 General “
如何使用LINQ
?
答案 0 :(得分:4)
你去吧
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();
答案 1 :(得分:2)
您可以使用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
。
答案 2 :(得分:1)
listA.Except(listB)
将为您提供列表A中不在列表B中的所有项目。
而不是相反。
答案 3 :(得分:1)
var result = list1.Except(list2).ToList();
答案 4 :(得分:0)
var q = A.Intersect(B);//"Personal" , "Tech"
var r = B.Except(A);//"General"