假设我们有一个这样的表:
id client order_number item_ref size quantity
1 CL-0001 123456 ITEM-0001 small 20
2 CL-0001 123456 ITEM-0001 big 20
3 CL-0001 123456 ITEM-0002 small 20
4 CL-0001 123456 ITEM-0002 big 20
5 CL-0001 456789 ITEM-0001 small 10
6 CL-0001 456789 ITEM-0001 medium 10
7 CL-0001 456789 ITEM-0001 big 10
8 CL-0001 456789 ITEM-0002 small 10
9 CL-0001 456789 ITEM-0002 medium 10
10 CL-0001 456789 ITEM-0002 big 10
我想获取所有行,但这个唯一的表实际上是我代码中的3个对象。
包含包含项目的订单的对象客户端。
所以在我的代码中我有这个:
public class Client
{
public string Reference { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public string Reference { get; set; }
public List<Item> Items{ get; set; }
}
public class Item
{
public string Reference { get; set; }
public string Size { get; set; }
public int Quantity { get; set; }
}
group by是否可以使用一个LinQ查询创建我的模型?
我问这个问题是因为我需要打印发票,并且根据项目的类型,有时我需要对所有尺寸进行分组并对数量求和,有时我需要显示每个数量的详细信息。
答案 0 :(得分:1)
var list = source.GroupBy(x => x.client)
.Select(x => new Client
{
Reference = x.Key,
Orders = x.GroupBy(y => y.order_number)
.Select(y => new Order
{
Reference = y.Key,
Items = y.Select(z => new Item
{
Reference = z.item_ref,
Size = z.Size,
Quantity = z.Quantity
}).ToList()
}).ToList()
}).ToList();