如何使用Linq从每个用户获取单个最后一条记录

时间:2015-02-10 10:44:14

标签: c# linq

我有一张包含个人信息的表格。

我有几列,但这个问题需要下一个:     - 用户身份      - 消息发送日期时间

我想从每个用户那里得到最后一条消息,并且不了解如何为此目标编译所需的linq查询。

有关详细信息,有几个用户向我发送了50-100封邮件,但我希望每个用户只能通过日期时间获取最后一封邮件,如何使用linq查询?

1 个答案:

答案 0 :(得分:2)

没有任何代码向我展示您的架构,这是一个完整的猜测,但您只需要按日期时间排序并采取第一个......

对于单个用户:

// 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));
}

应该像按用户ID过滤一样简单,按日期排序并记录最高记录。