6

だから基本的に私は次の2つを持っていますIEnumerable lists

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

今私が達成したいのは、との違いを取得することですList AList Bこの場合は、SocialGeneralです。

また、それに応じて挿入および削除するには、 Socialが追加でList Aあり、Generalが追加であると判断する必要があります。List B

別のシナリオもあります

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

この場合、General "を返します。

どうすればそれを行うことができLINQますか?

4

5 に答える 5

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();
于 2013-01-10T12:12:30.280 に答える
2

List<T>.Except()メソッドを使用できます。

2つのシーケンスのセット差を生成します。

        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です。

2番目のケースの場合。

        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です。

于 2013-01-10T12:10:58.580 に答える
1

listA.Except(listB)リストBにないリストAのすべてのアイテムが表示されます。逆の場合よりも。

于 2013-01-10T12:09:41.780 に答える
1

Enumerable.Exceptを使用します

var result = list1.Except(list2).ToList();
于 2013-01-10T12:10:32.163 に答える
0
var q = A.Intersect(B);//"Personal" , "Tech"
var r = B.Except(A);//"General"
于 2013-01-10T12:23:45.663 に答える