如何检查两个对象列表中是否没有匹配的元素?

时间:2017-06-18 20:03:28

标签: c# list iteration match intersect

我有两个对象列表:new HttpMessageInvoker(server, true)&amp; List<One>我希望实现以下目标。

对于每个List<Two>

  • 如果One.Id中有匹配的ID,则不执行任何操作
  • 如果Two.Id中没有匹配的ID,请执行操作

我在迭代中尝试迭代,但无法找到合适的解决方案。

提前致谢。

5 个答案:

答案 0 :(得分:2)

您可以使用LINQ的Any()方法检查是否存在匹配项:

foreach (var one in listOne) {
    if (!listTwo.Any(two => two.Id == one.Id)) {
        // No matches
    }
}

答案 1 :(得分:2)

我会在这样的专用函数中使用Any()

bool HasMatches(List<One> ones, List<Two> twos)
{
    foreach (var item in ones) {
        if (!twos.Any(other => other.Id == item.Id)) 
            return false;
    }
    return true;
}

一旦找不到当前项目的匹配项,就应该完成搜索。

答案 2 :(得分:0)

你可以做这样的事情

List<one> a = new List<one>;
List<two> b = new List<two>;

foreach( l in a)
{
    if(b.Any(x=>x.id == l.id)){
    //do something
    }
    else{
    //do something
    }
}

答案 3 :(得分:0)

foreach(var item1 in list1)
{
    if(list2.Any(item2=>item2.Id== item1.Id))
    {
        //do nothing
        continue;
    }
    // do something
}

答案 4 :(得分:0)

您可以像这样使用[{...}, {...}, {...}]

Contains