Два для цикла в лямбда-выражении
Как создать ровно следующие два для в лямбда-выражении?
foreach (var item in list1)
{
foreach (var item2 in list2)
{
if (item.number == item2.number)
{
return false;
}
}
}
3 ответа
Решение
Поскольку вы просто проверяете, соответствует ли какой-либо элемент, вы можете использовать Any()
,
return !list1.Any( item1 => list2.Any(item2 => item2 == item1 ));
Я бы просто использовал Intersect
функция доступна для списков, и это вернет вам все элементы, которые являются общими в 2 списках. Если вы просто хотите посмотреть, существует ли он, вы можете сделать это очень просто, проверив счетчик.
int count = List1.Select(s => s.number).Intersect(List2.Select(s => s.number)).Count;
Если вы хотите узнать, какие элементы являются уникальными в обоих списках, используйте метод Exclude.
var uniqueItems = List1.Select(s => s.number).Except(List2.Select(s => s.number));
Ну вот!!
Использование синтаксиса метода Linq:
!list1.Any(item => list2.Any(item2 => item.number == item2.number))
Использование синтаксиса Linq Query:
!(from item in list1
from item2 in list2
where item.number==item2.number select item).Any()