Получить отдельный список между двумя списками в 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);
}