C# 检查2个IEnumerables之间的差异
因此,基本上我有以下2个C# 检查2个IEnumerables之间的差异,c#,linq,list,ienumerable,C#,Linq,List,Ienumerable,因此,基本上我有以下2个IEnumerable列表 List A = {"Personal", "Tech", "Social"} List B = {"Personal", "Tech", "General"} 现在我想要实现的是,得到列表A和列表B之间的区别,在本例中是社会性和一般性的 我还需要确定列表A中的Social是extra,而列表B中的General是extra,以便相应地插入和删除 我还可以有另一个场景 List A = {"Personal", "Tech"} List
IEnumerable列表
List A = {"Personal", "Tech", "Social"}
List B = {"Personal", "Tech", "General"}
现在我想要实现的是,得到列表A
和列表B
之间的区别,在本例中是社会性和一般性的
我还需要确定列表A
中的Social是extra,而列表B中的General是extra,以便相应地插入和删除
我还可以有另一个场景
List A = {"Personal", "Tech"}
List B = {"Personal", "Tech", "General"}
在这种情况下,它将返回General“
如何使用LINQ
?列表A。除(列表B)
外,列表A中不在列表B中的所有项目都将显示出来。
然后做相反的操作。使用
你可以使用这个方法
生成两个序列的集差
这是一张支票。给你
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();
var ListA=新列表{“个人”、“技术”、“社会”};
var ListB=新列表{“个人”、“技术”、“通用”};
var insert=ListA.Except(ListB.ToList();
var delete=ListB.Except(ListA.ToList();
列表是否可以排序?索引是否重要,例如,它们是否不同{“foo”,“bar”}
和{“bar”,“foo”}
不,在这种情况下,它们是相同的。列表中的位置并不重要。我尝试了您的解决方案,但列表完全相同,它返回3个结果,即3个条目。事实上,我尝试了上面所述的简单示例,效果很好。因此,我的列表有问题,将使它们更简单。谢谢!谢谢alexb but我发现了我的问题!:)谢谢你的帮助,现在工作得很好
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);
}
}
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);
}
}
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();
var q = A.Intersect(B);//"Personal" , "Tech"
var r = B.Except(A);//"General"