在嵌套列表linq中的Group By对象

时间:2015-02-23 15:13:46

标签: c# linq

我想要做的是我有包含

的销售订单对象
sales order header
and list of order lines

在订单行中我有实际的订单行,产品信息对象和股票信息对象:

public class SalesOrder
{
  public Header SalesHeader { get; set; }
  public List<OrderLineProductInfo> OrderLines { get; set; }
}

public class OrderLineProductInfo
{
  public Line salesOrderLine { get; set; }
  public Info ProductInfo { get; set; }
  public Stock ProductStock { get; set; }
}

所以我可以获得SalesOrder对象的列表,所以示例销售订单索引0

有2行,其中一行中的ProductStockObject有abc首选供应商,另一行有首选供应商123

我希望能够对首选供应商属性进行分组

var separatePreferredSuppliers =
     (from b in x.OrderLines
                 .GroupBy(g => g.ProductStock.PreferredSupplier ) 
                   select ...
     ).ToList();

不太确定下一步需要选择什么?一个新的SalesOrder列表?

我想要它,以便它给出销售订单的两个实例,但为每个首选供应商分成2个实例

2 个答案:

答案 0 :(得分:0)

我想我明白你的意思

from line in x.OrderLines
group line by line.ProductStock.PreferredSupplier into grouped
select new SalesOrder
{
     OrderLines = grouped.ToList()
}

虽然我不确定您如何填充SalesHeader

答案 1 :(得分:0)

当你知道groupby函数返回什么时很容易 - 你想要键和列表:

.Select( (g) => new { supplier = g.Key, prodlist = g.ToList()}