[英]Finding an item within a list within another list?
好的,我們假設我有一個List<car>
。 每輛車還包含一個List<part>
。 每個部分都有一個與之關聯的ID
。 我只給了一個part
的ID
,我想找到包含該part
的car
。 找這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.