好的,假设我有一个List<car>
. 每辆车还包含一个List<part>
. 每个部分都有一个ID
与之关联的。我只得到了ID
a part
,我想找到car
包含那个的part
。找到这个的最好方法是什么car
?
问问题
15031 次
6 回答
15
使用 LINQ 怎么样?
List<Car> cars = ...
var carToFind = cars.FirstOrDefault(car => car.Parts.Any(part => part.Id == idToFind));
用英语:“查找第一辆汽车(如果不存在这样的汽车,则为 null),其任何部件的 Id 与所需的 Id 匹配。”
于 2012-07-27T17:07:10.060 回答
5
var id = 123;
var cars = new List<Car>();
var theCar = cars.Single(
car => car.parts
.FirstOrDefault(part => part.Id == id) != null
);
于 2012-07-27T17:05:03.167 回答
2
您可以像这样执行 LINQ 查询:
// List<car> cars;
int id = 101;
var result = Cars.Where (c => c.parts.Where (p => p.ID == id).Any ());
于 2012-07-27T17:06:46.257 回答
1
怎么样:
foreach(Car car in listOfCars)
{
if (car.parts.Contains(partID))
{
return car;
}
}
Edit2:啊,我误解了,以为你的车有一个 partID 列表。
那么,在那种情况下...
foreach(Car car in listOfCars)
{
foreach(Part part in car.parts)
{
if (part.id == partId)
{
return car;
}
}
}
Edit1:根据您的用例,维护一个从零件 ID 映射到汽车的“索引”也可能有意义。就像是:
var partIDToCar = Dictionary<string, Car>();
当您将零件放入汽车时,您会更新索引:
partIDToCar[partID] = car;
然后,快速检查取车:
if (partIDToCar.ContainsKey(partID))
{
return partIDToCar[partID];
}
于 2012-07-27T17:03:57.217 回答
1
在查找中查找
List<car> cars = new List<Car>();
List<car> carWithParts = cars.Find(x => x.parts.Any(y => y.PartID=123));
如果多辆汽车可以包含相同的 PartID,这将起作用。
于 2012-07-27T17:11:33.993 回答
0
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;
}
于 2012-07-27T17:04:18.600 回答