列表到LINQ查询

时间:2014-02-28 04:37:41

标签: linq

我有一个数据库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的所有组合的列表。 任何帮助或建议都将得到帮助。

1 个答案:

答案 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()