Linq查询到带有嵌套列表的对象 [英] Linq query to object with nested list
本文介绍了Linq查询到带有嵌套列表的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下LINQ查询,它创建以下输出:
I have the following LINQ query that creates the following outputs:
var query = from s in db.Sku
join sc in db.SkuCombo on s.Sku equals sc.Sku
join s2 in db.Sku on sc.SkuId equals s2.Sku
where skulist.Contains(s.Sku)
select new
{
Sku = s.Sku,
SkuQty = s.SkuQty,
ComboSku = s2.Sku,
ComboSkuQty = sc.Qty
};
Sku SkuQty ComboSku ComboSkuQty
===============================================
ABC-123 1 CCC-111 2
ABC-123 1 DDD-222 3
ABC-123 1 EEE-333 1
ABC-123 1 FFF-444 4
XYZ-789 3 JJJ-777 5
XYZ-789 3 KKK-888 1
我希望将输出映射到C#类 OrderItem
,但是我不确定该怎么做.我很确定我需要在 Sku
上的 group by
吗?
I would like the output to be mapped to C# class OrderItem
, but I'm not sure how to go about this. I'm pretty sure that I need a group by
on the Sku
?
public class OrderItem
{
public string Sku { get; set; }
public int SkuQty { get; set; }
public List<ComboItem> ComboItems { get; set; }
}
public class ComboItem
{
public string ComboSku { get; set; }
public int ComboSkuQty { get; set; }
}
推荐答案
尝试以下操作:
var query = (from s in db.Sku
join sc in db.SkuCombo on s.Sku equals sc.Sku
join s2 in db.Sku on sc.SkuId equals s2.Sku
where skulist.Contains(s.Sku)
select new
{
Sku = s.Sku,
SkuQty = s.SkuQty,
ComboSku = s2.Sku,
ComboSkuQty = sc.Qty
}).GroupBy(x => x.Sku)
.Select(x => new OrderItem()
{
Sku = x.Key,
SkuQty = x.Sum(y => y.SkuQty),
ComboItems = x.Select(y => new ComboItem()
{
ComboSku = y.ComboSku,
ComboSkuQty = y.ComboSkuQty
}).ToList()
}).ToList();
这篇关于Linq查询到带有嵌套列表的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文