Два для цикла в лямбда-выражении

Как создать ровно следующие два для в лямбда-выражении?

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()
Другие вопросы по тегам