2012-07-13 7 views
3

Avoir une requête T-SQL:Comment obtenir une requête lambda similaire à cette requête tsql?

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

requête LINQ Tentative:

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

La requête lambda ne fonctionne pas.

Répondre

6

Je pense que c'est ce que vous recherchez:

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

Qu'est-ce que g.Key représente? Est-ce un mot-clé spécial ou une sorte? – dotnetN00b

+0

g.Key est la valeur du champ que vous avez regroupé (p. Ex. P.ProductNumber). –

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