LINQ

2012-02-15 26 views
5

Bana bir lambda ifadeLINQ

SELECT [UserID], MAX(Created) Created 
FROM [UserHistory] 
WHERE userid IN (14287) 
GROUP BY [UserID] 

Teşekkür bu dönüştürmek yardımcı olun!

DÜZENLEME: Şimdiye kadar sahip olduğum şeyler. Ben GroupBy eklediğinizde

List<T> list; //list is populated 

table.Where(x => list.Select(y => y.ClientId).Contains(x.UserID)) 
        .GroupBy(x => x.UserID) 
        .Select(x => new { x.UserID, x.Created }) 
        .ToList(); 

, benim Seç x.UserID ve x.Created için hiçbir tanım olmadığını söylüyor. İşte

+3

Neye takıldınız? – Krizz

+0

Grubu eklediğimde, select molalarım. Grup diğer tüm alanları ya da başka şeyleri yok eder mi? – Kukoy

+1

Unutmayın, grup tarafından 'IEnumerable 'yerine IEnumerable >' seçeneğine sahip olduktan sonra unutmayın. Aşağıdaki adamlar gerçeğin pratik örneklerini gösteriyor. – Krizz

cevap

11

gitmek: Ben .Select(x => new { x.UserID, x.Created }) yılında, yorumunda söylediği gibi

var userIDs = new[] {14287, }; 

var results = 
dataContext.UserHistories 
.Where(user => userIDs.Contains(user.userID)) 
.GroupBy(user => user.userID) 
.Select(
    userGroup => 
     new 
     { 
      UserID = userGroup.Key, 
      Created = userGroup.Max(user => user.Created), 
     }); 
+0

Mükemmel, teşekkürler. – Kukoy

0
var query = from history in context.UserHistories 
       where (new[] {14287}).Contains(history.userID) 
       group history by history.UserID into g 
      select new 
      { 
       UserId = g.Key, 
       MaxCreated = g.Max(x => x.Created) 
      }; 
+0

WHERE userid IN (14287) ifadesini özlediniz. – Krizz

+0

Sağ. Not için teşekkürler. – Meligy

+0

Orijinal posta lambda için sorulan – jgerman

0

, Düzenlemenizi ilgili olarak, xartık bir UserHistory, bu IGrouping<int, UserHistory> (1), hangi değil iseve Created özelliklerine sahip olmakla birlikte, yalnızca bir kullanıcı kimliği olan ve IEnumerable değerini verilen anahtarın tüm öğelerini (kullanıcı kimliği) numaralandırmak için uygulayan yalnızca Key özelliği.

@DaveShaw snippet'ini en doğru ve en verimli şekilde kullanın.

(1) UserID'un int olduğunu varsayalım.