如何检查两个对象列表中是否没有匹配的元素?
How to check if there are no matching elements in two lists of objects?
我有两个对象列表:List<One>
& List<Two>
我想实现以下目标。
每个 One.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
}
}
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
}
我有两个对象列表:List<One>
& List<Two>
我想实现以下目标。
每个 One.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
}
}
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
}