Получите разные и общие элементы в двух массивах с LINQ
Например, у меня есть два массива:
var list1 = string[] {"1", "2", "3", "4", "5", "6"};
var list2 = string[] {"2", "3", "4"};
Я пытаюсь сделать это -
- Получайте общие элементы из
list1
и list2
(например, {"2", "3", "4"}) - Получите разные элементы
list1
и list2
(например, {"1", "5", "6"})
Поэтому я попытался с LINQ и -
var listDiff = list1.Except(list2); //This gets the desire result for different items
Но,
var listCommon = list1.Intersect(list2); //This doesn't give me desire result. Comes out as {"1", "5", "6", "2", "3", "4"};
Есть идеи?
Ответы
Ответ 1
Как-то вы получили этот результат из другого места. (Возможно, вы сначала listDIff
содержимое listDIff
и подумали, что это из listCommon
.) Метод Intersect
предоставляет вам элементы, которые существуют в обоих списках:
var list1 = new string[] {"1", "2", "3", "4", "5", "6"};
var list2 = new string[] {"2", "3", "4"};
var listCommon = list1.Intersect(list2);
foreach (string s in listCommon) Console.WriteLine(s);
Вывод:
2
3
4