LINQ分组在C#中

时间:2009-03-24 04:48:55

标签: c# linq

我很困惑。我从Microsoft LINQ示例site复制了此代码,但无法进行编译。

我想做类似的事情,但它说它无法解决符号minPrice和一堆其他错误。是什么给了什么?

public void Linq84() { 
   List products = GetProductList();

   var categories = 
      from p in products 
      group p by p.Category into g 
      from minPrice = g.Group.Min(p => p.UnitPrice) 
      select new {Category = g.Key, CheapestProducts = g.Group.Where(p => p.UnitPrice == minPrice)};

   ObjectDumper.Write(categories, 1); 
} 

1 个答案:

答案 0 :(得分:7)

我认为该查询有一些拼写错误,或者是在Linq的早期阶段制作的。

我会把它重写为:

var categories = from p in products
                 group p by p.Category into g
                   let  minPrice = g.Min(p => p.UnitPrice)
                 select new {
                              Category = g.Key,
                              CheapestProducts = g.Where(p => p.UnitPrice == minPrice)
                            };
顺便说一句,作为良好的学习资源,我强烈建议你LinqPad这是一个很棒的工具HookedToLinq