我有一个数据库SP,其返回结果如下所示。
ProductID ProductName Composition
1 PRod1 pc1
1 PRod1 pc11
2 PRod2 pc2
2 PRod2 pc22
1 Prod1 pc111
因为这是作为列表返回的,我确实有一个包含的ViewModel PVM {productId,productName和List compostionVM}和compsotionVM {productID,Compostion}
我希望从上面的结果中提取
Result.Select(r =>new PVM{Id = r.Id,Name = r.ProductName, compsotionVM ).ToList()}).ToList();
即。产品ID,Prouct名称和要绑定到View的所有组合的列表。 任何帮助或建议都将得到帮助。
答案 0 :(得分:0)
您可以尝试以下查询:
result.GroupBy(item => new{item.ProductID, item.ProductName})
.Select(group =>
new PVM
{
ProductID = group.Key.ProductID,
ProductName= group.Key.ProductName,
Compositions =
group
.Select(g=>
new CompositionVM
{
ProductID = g.ProductID,
Composition = g.Composition
})
.ToList()
});
如果您想通过组合Composition(z)列将具有相同名称(x)和Id(y)的产品分组在一起。
所以这里的想法是由主查询中的2组条件(x和y)组合,然后查询中的每个项目将是同一组中的项目组合,这允许您执行子查询,如< / p>
group
.Select(g=>
new CompositionVM
{
ProductID = g.ProductID,
Composition = g.Composition
})
.ToList()