在另一个列表中的列表中查找项目?

pro*_*don 6 .net c# collections list

好吧,让我们说我有一个List<car>.每辆车还包含一个List<part>.每个部分都ID与之相关联.我只给了IDa part,我想找到car包含它的那个part.找到这个的最佳方法是什么car

Ani*_*Ani 11

LINQ怎么样?

List<Car> cars = ...
var carToFind = cars.FirstOrDefault(car => car.Parts.Any(part => part.Id == idToFind));
Run Code Online (Sandbox Code Playgroud)

在英语中:"找到第一辆车(如果没有这样的车,则为null),其中任何部件的Id都与所需的Id匹配."


Guv*_*nte 5

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

  • 如果找到不止一辆汽车,这将引发异常。您可能想要删除 Single() 调用。此外,包含在这种情况下不起作用(除非您实现了自己的版本)。 (3认同)