Получить отдельный список между двумя списками в C#

У меня есть два списка строк. Как получить список различных значений между ними или удалить вторые элементы списка из первого списка?

List<string> list1 = { "see","you","live"}

List<string> list2 = { "see"}

Результат должен быть {"you","live"},

4 ответа

Решение

Мне кажется, что вам нужно Enumerable.Except():

var differences = list1.Except(list2);

И тогда вы можете просмотреть все различия:

foreach(var difference in differences)
{
    // work with each individual string here.
}

Если вы хотите получить элементы из первого списка, кроме элементов во втором списке, используйте

list1.Except(list2)

Если вы хотите получить элементы, которые находятся в первом или во втором списке, но не в обоих, вы можете использовать

list1.Except(list2).Concat(list2.Except(list1))

Это хороший способ, который я нахожу уникальным....

Уникальный из двух списков

        var A = new List<int>() { 1,2,3,4 };
        var B = new List<int>() { 1, 5, 6, 7 };

       var a= A.Except(B).ToList();
        // outputs List<int>(2) { 2,3,4 }
       var b= B.Except(A).ToList();
        // outputs List<int>(2) { 5,6,7 }
       var abint=  B.Intersect(A).ToList();
        // outputs List<int>(2) { 1 }

вот мой ответ: найдите значение различия в двух списках и назначьте эти данные третьему списку.

Список list1 = новый список (){1,2,3,4,5,6}; Список list2 = новый список (){1,2,3,7,8,9}; Список list3 = новый список ();

              //var CommonList = list1.Intersect(list2);
        //foreach (var item in CommonList)
        //{
        //    Console.WriteLine("Same Item {0}", item);
        //}
        var DifferentList1 =list1.Except(list2).Concat(list2.Except(list1));

        //var DifferentList2 = list2.Except(list1);
        foreach (var item in DifferentList1)
        {
            list3.Add(item);
            
        }
        foreach(var item in list3)
        {
            Console.WriteLine("Different Item {0}", item);
        }  
Другие вопросы по тегам