2012-07-13 69 views
3

有一个T-SQL查询:如何获得一个类似于tsql查询的lambda查询?

select [ProductNumber] ,max([ProductRevNumber]) 
from Products 
group by [ProductNumber] 

尝试LINQ查询:

ProductsDBContext.Products.GroupBy(x => x.ProductRevNumber) 
          .Select(group => ProductNumber, 
              ProductRevNumber = group.Max(x => x.ProductRevNumber)); 

拉姆达查询不起作用。

回答

6

我想这是你所追求的:

var latestProducts = ProductsDBContext.Products 
    .GroupBy(p => p.ProductNumber).Select(g => new 
    { 
     ProductNumber = g.Key, 
     MaxProductRevNumber = g.Max(p => p.ProductRevNumber)) 
    }); 
+0

是什么g.Key代表什么?这是一个特殊的关键字或某种类型? – dotnetN00b 2012-07-13 17:25:15

+0

g.Key是您分组的字段的值(即p.ProductNumber)。 – 2012-07-13 17:29:46

2
from p in db.Products 
group p by p.ProductNumber into g 
select new 
{ 
    ProductNumber = g.Key, 
    ProductRevNumber = g.Max(p => p.ProductRevNumber) 
};