检查两个IEnumerables之间的差异



基本上我有以下两个IEnumerable lists

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

现在我想要实现的是,得到List AList B之间的差异,在本例中是SocialGeneral

我还需要确定SocialList A中是额外的,GeneralList 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"

相关内容

  • 没有找到相关文章

最新更新