我试图找到一个尚未拍摄的公寓号码。因此,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;
}
}
}
答案 0 :(得分:1)
using System.Linq;
//availableApartments will contain all available apartments
var availableApartments = all.Except(list)
// Will get you the first item.
var freeApartment = availableApartments.FirstOrDefault()
参考 - Enumerable.Except
答案 1 :(得分:1)
问题是您没有检查所有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
}
}