使用LINQ在父对象列表中查找子对象

本文关键字:对象 查找 列表 使用 LINQ | 更新日期: 2023-09-27 18:11:34

给定一个父对象列表,每个父对象都有一个子对象列表,我想找到匹配特定ID的子对象。

public class Parent
{
    public int ID { get; set; }
    public List<Child> Children { get; set; }
}
public class Child
{
    public int ID { get; set; }
}

现在我想让Child对象有一个特定的ID:

List<Parent> parents = GetParents();
Child childWithId17 = ???

我如何使用Linq来做到这一点?

使用LINQ在父对象列表中查找子对象

我想你要:

Child childWithId17 = parents.SelectMany(parent => parent.Children)
                             .FirstOrDefault(child => child.ID == 17);

注意,这假定Parent的Children属性不是空引用或包含空子引用。

您可以使用SelectMany:

Child childWithId17 = parents.SelectMany(p => p.Children)
                             .Where(ch=>ch.ID==17)
                             .FirstOrDefault();