检查2 IEnumerables之间的差异

时间:2013-01-10 12:08:01

标签: c# linq list ienumerable

所以基本上我有以下2 IEnumerable lists

List A = {"Personal", "Tech", "Social"}
List B = {"Personal", "Tech", "General"}

现在我想要实现的是,在List AList B之间取得区别,在本例中为社交一般

我还需要确定List A中的社交是额外的,而List B常规是额外的,以便相应地插入和删除。

我还可以有另一个场景

 List A = {"Personal", "Tech"}
 List B = {"Personal", "Tech", "General"}

在这种情况下,它将返回 General

如何使用LINQ

执行此操作

5 个答案:

答案 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)

使用Enumerable.Except

var result = list1.Except(list2).ToList();

答案 4 :(得分:0)

var q = A.Intersect(B);//"Personal" , "Tech"
var r = B.Except(A);//"General"