簡體   English   中英

在另一個列表中的列表中查找項目?

[英]Finding an item within a list within another list?

好的,我們假設我有一個List<car> 每輛車還包含一個List<part> 每個部分都有一個與之關聯的ID 我只給了一個partID ,我想找到包含該partcar 找這car最好的方法是什么?

LINQ怎么樣?

List<Car> cars = ...
var carToFind = cars.FirstOrDefault(car => car.Parts.Any(part => part.Id == idToFind));

在英語中:“找到第一輛車(如果沒有這樣的車,則為null),其中任何部件的Id都與所需的Id匹配。”

var id = 123;
var cars = new List<Car>();
var theCar = cars.Single(
          car => car.parts
                    .FirstOrDefault(part => part.Id == id) != null
          );

您可以像這樣執行LINQ查詢:

// List<car> cars;
int id = 101;
var result = Cars.Where (c => c.parts.Where (p => p.ID == id).Any ());

怎么樣:

foreach(Car car in listOfCars)
{
    if (car.parts.Contains(partID))
    {
        return car;
    }
}

編輯2:啊,我誤解了,並認為你的車有一份partID列表。

那么,在那種情況下......

foreach(Car car in listOfCars)
{
    foreach(Part part in car.parts)
    {
        if (part.id == partId)
        {
            return car;
        }
    }
}

編輯1:根據您的使用情況,維護從零件ID映射到汽車的“索引”也是有意義的。 就像是:

var partIDToCar = Dictionary<string, Car>();

當您在汽車中放置零件時,您需要更新索引:

partIDToCar[partID] = car;

然后,這是一個快速檢查以獲得汽車:

if (partIDToCar.ContainsKey(partID))
{
    return partIDToCar[partID];
}

在查找中查找

List<car> cars = new List<Car>();
List<car> carWithParts = cars.Find(x => x.parts.Any(y => y.PartID=123));

如果多輛汽車可以包含相同的PartID,這將有效。

 var thePart;

 foreach (var part in list<parts>)
 {
 if (part.id = ID)
 thePart = part;
 }

 foreach (var car in list<cars>)
 {
 if (car.Part = thePart)
 return car;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM