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

How to check if there are no matching elements in two lists of objects?

我有两个对象列表:List<One> & List<Two> 我想实现以下目标。

每个 One.Id:

我尝试了迭代中的迭代,但找不到合适的解决方案。

提前致谢。

你可以这样做

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
    }
}
foreach(var item1 in list1)
{
    if(list2.Any(item2=>item2.Id== item1.Id))
    {
        //do nothing
        continue;
    }
    // do something
}

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

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

我会在这样的专用函数中使用 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;
}

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

你可以这样使用Contains

bool isContainId = List<one>.Contains(two.Id);

if (isContainsId)
{
     // do something
}

else
{
     // do something
}