使用嵌套循环搜索两个列表

本文关键字:两个 列表 嵌套循环 搜索 | 更新日期: 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()

引用-可枚举。除外