Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查两个对象列表中是否没有匹配的元素?_C#_List_Iteration_Match_Intersect - Fatal编程技术网

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

C# 如何检查两个对象列表中是否没有匹配的元素?,c#,list,iteration,match,intersect,C#,List,Iteration,Match,Intersect,我有两个对象列表:List&List,我想实现以下目标 对于每个一个.Id: 如果Two.Id中有匹配的Id,则不执行任何操作 否则,如果Two.Id中没有匹配的Id,请执行某些操作 我尝试在迭代中使用迭代,但找不到合适的解决方案 提前谢谢。你可以做这样的事情 List<one> a = new List<one>; List<two> b = new List<two>; foreach( l in a) { if(b.Any(x=

我有两个对象列表:
List
&
List
,我想实现以下目标

对于每个
一个.Id

  • 如果
    Two.Id
    中有匹配的Id,则不执行任何操作
  • 否则,如果
    Two.Id
    中没有匹配的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
    }
}
List a=新列表;
列表b=新列表;
foreach(a中的l)
{
如果(b.Any(x=>x.id==l.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
    }
}
List a=新列表;
列表b=新列表;
foreach(a中的l)
{
如果(b.Any(x=>x.id==l.id)){
//做点什么
}
否则{
//做点什么
}
}
您可以使用LINQ的Any()方法检查是否存在匹配项:

foreach (var one in listOne) {
    if (!listTwo.Any(two => two.Id == one.Id)) {
        // No matches
    }
}
您可以使用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;
}
bool HasMatches(列出一个,列出两个)
{
foreach(一个项目中的var项目){
如果(!twos.Any(other=>other.Id==item.Id))
返回false;
}
返回true;
}
一旦没有找到与当前项匹配的项,您应该完成搜索。

我会在如下专用函数中使用
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;
}
bool HasMatches(列出一个,列出两个)
{
foreach(一个项目中的var项目){
如果(!twos.Any(other=>other.Id==item.Id))
返回false;
}
返回true;
}

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

您可以像这样使用
包含

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

if (isContainsId)
{
     // do something
}

else
{
     // do something
}
bool isContainId=List.Contains(两个.Id);
if(isContainsId)
{
//做点什么
}
其他的
{
//做点什么
}

您可以像这样使用
包含

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

if (isContainsId)
{
     // do something
}

else
{
     // do something
}
bool isContainId=List.Contains(两个.Id);
if(isContainsId)
{
//做点什么
}
其他的
{
//做点什么
}

正在工作。谢谢,我正在工作。谢谢,我正在工作。谢谢。我接受了adjan的答案,删除了这个方法,因为我不需要它,然后使用了foreach,但是这样做和你的答案是一样的,所以两者都对我有好处。我能接受两者吗?@Tomo对简单问题的回答往往相似。因此不允许接受多个答案。你接受哪一个并不重要:背后的想法是让其他网站访问者知道你的问题已经解决了。谢谢。我接受了adjan的答案,删除了这个方法,因为我不需要它,然后使用了foreach,但是这样做和你的答案是一样的,所以两者都对我有好处。我能接受两者吗?@Tomo对简单问题的回答往往相似。因此不允许接受多个答案。你接受哪一个并不重要:背后的想法是让其他网站访问者知道你的问题已经解决了。