C# 检查2个IEnumerables之间的差异

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

因此,基本上我有以下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 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"