lambda表达式中的两个for循环

时间:2018-04-12 17:09:09

标签: c# list linq lambda

如何在lambda表达式中创建完全跟随的两个?

foreach (var item in list1)
{
    foreach (var item2 in list2)
    {
        if (item.number == item2.number)
        {
            return false;
        }
    }
}

3 个答案:

答案 0 :(得分:3)

由于您只是检查是否有任何一个项目匹配,因此您可以使用Any()

return !list1.Any( item1 => list2.Any(item2 => item2 == item1 ));

答案 1 :(得分:2)

我只会使用可用于列表的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));

答案 2 :(得分:0)

你走了!!

使用Linq方法语法:

!list1.Any(item => list2.Any(item2 => item.number == item2.number))

使用Linq查询语法:

!(from item in list1 
from item2 in list2
where item.number==item2.number select item).Any()