2012-02-15 39 views
5

Xin hãy giúp tôi chuyển đổi này để một biểu thức lambdaLINQ to SQL groupby Max() lambda

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

Cảm ơn!

EDIT: Đây là những gì tôi có cho đến nay.

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(); 

Khi tôi thêm GroupBy, Chọn của tôi cho biết không có định nghĩa cho x.UserID và x.Created.

+3

Bạn bị kẹt ở đâu? – Krizz

+0

Khi tôi thêm nhóm vào, các ngắt chọn của tôi. Liệu nhóm này có loại bỏ tất cả các lĩnh vực khác hay không? – Kukoy

+1

Hãy nhớ rằng, sau khi 'nhóm bởi' bạn có' IEnumerable > 'thay vì' IEnumerable ban đầu của bạn '. Những người dưới đây cho bạn thấy những ví dụ thực tế về thực tế. – Krizz

Trả lời

11

Ở đây bạn đi:

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

Hoàn hảo, cảm ơn. – 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

Bạn đã bỏ lỡ cụm từ 'WHERE userid IN (14287)'. – Krizz

+0

Phải. Cảm ơn ghi chú. – Meligy

+0

Bài gốc được yêu cầu cho lambda – jgerman

0

Về sửa đổi của bạn, như tôi đã nói trong bình luận, trong .Select(x => new { x.UserID, x.Created }), xkhông còn một UserHistory, nó là IGrouping<int, UserHistory> (1), mà không có các thuộc tính UserIDCreated, nhưng chỉ thuộc tính Key, là id người dùng và triển khai IEnumerable để liệt kê tất cả các mục cho khóa đã cho (id người dùng).

Sử dụng đoạn mã @DaveShaw vì đây là đoạn mã đúng và hiệu quả nhất.

(1) Tôi giả định UserIDint.