使用嵌套循环搜索两个列表
本文关键字:两个 列表 嵌套循环 搜索 | 更新日期: 2023-09-27 18:27:42
我正在查找一个尚未占用的公寓号。因此,list<>
是已入住公寓的列表,all<>
是所有公寓的列表。所以我试着反复浏览它们,找到一个还没有入住的公寓。
这不起作用:
list<> // 4 indexes
all<> // 25 indexes
for (int i = 0;i < all.Count; i++)
{
for (int j = 0; j < list.Count; j++)
{
if (all[i].apartmentNr != list[j].apartmentNr)
{
apartmentNr = all[i].apartmentNr;
}
}
}
问题是,您没有检查所有的list
项,因此apartmentNr
设置在第一个不匹配项上,但它可能会在下一个列表项上使用。因此,您需要检查所有list
项目,然后才能得出它是免费的结论:
list<> // 4 indexes
all<> // 25 indexes
for (int i = 0;i < all.Count; i++)
{
bool taken = false;
for (int j = 0; j < list.Count; j++)
{
if (all[i].apartmentNr == list[j].apartmentNr)
{
taken = true;
break; // no need to check the rest
}
}
if (!taken) {
apartmentNr = all[i].apartmentNr;
break; // found first free
}
}
using System.Linq;
//availableApartments will contain all available apartments
var availableApartments = all.Except(list)
// Will get you the first item.
var freeApartment = availableApartments.FirstOrDefault()
引用-可枚举。除外