2015-02-10 42 views
0

我有一個包含個人消息的表。如何從每個使用Linq的用戶獲取單個最後一條記錄

我有幾個它列,但要求這個問題是下一: - 用戶ID - 消息發送的日期時間

我想從每個用戶的最後一個消息,不知道如何爲此目的編譯所需的linq查詢。

有關詳細信息,幾個用戶已發送給我50-100消息,但我想從每個用戶只有最後一個由datetime得到,它如何使用linq查詢?

+0

有什麼代碼可以告訴我們嗎? – 2015-02-10 10:44:53

+0

發佈您的實體模型。 – 2015-02-10 10:45:43

+0

Eh ...最後()的消息? https://msdn.microsoft.com/en-us/library/vstudio/bb358775%28v=vs.100%29.aspx – 2015-02-10 10:46:05

回答

1

沒有任何代碼告訴我關於你的架構,這是一個完整的猜測,但你應該僅僅具有日期時間訂購,並採取先......

對於單個用戶:

// Assuming you are using an Entity Framework context? 
using (var context = new MyContext()) { 
    var lastMessage = context.PersonalMessages.Where(u => u.UserId == userId).OrderByDescending(t => t.SentDate).FirstOrDefault(); 
} 

獲取最後的消息對所有用戶:

using (var context = new MyContext()) { 
var lastMessages = context.PersonalMessages.GroupBy(pm => pm.UserId).SelectMany(g => g.OrderByDescending(pm => pm.SentDate).Take(1)); 
} 

如果b就像通過用戶ID進行過濾一樣簡單,按日期排序並取得最高記錄。

+0

對於一個用戶來說,一次是可以的,那麼所有用戶一次呢? – Jodrell 2015-02-10 10:57:18

相關問題