实体框架查询以获取子项

时间:2019-02-27 13:48:08

标签: c# entity-framework entity-framework-6 linq-to-entities

我的订单结构如下

1234号订单

  • 类别1

    • 项目111

    • 项目222

  • 类别7

    • 项目444

如何修改下面的查询以包含1234号订单中的所有商品

public List<Items> GetAllOrderItems(int orderId)
{

   var result = (from o in _orderContext.Orders
                 where o.OrderId == orderId
                 select s).toList();
}

List<Items> =>项目111,项目222,项目444

1 个答案:

答案 0 :(得分:0)

您可以为此使用SelectMany。这是一个简单的例子:

class Master
{
    public List<Item> Items { get; set; } = new List<Item>() { new Item(1), new Item(2) };
}
class Item
{
    public Item(int x)
    {
        this.X = x;
    }

    public int X { get; set; }
}

public static void Main(string[] args)
{
    var masters = new List<Master>();
    masters.Add(new Master());
    masters.Add(new Master());

    List<int> xList = masters.Select(s => s.Items).SelectMany(s => s, (m, i) => i.X).ToList();

    foreach (int item in xList)
    {
        Console.WriteLine(item);
    }
}