繁体   English   中英

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

[英]How to get a single last record from each user using Linq

我的桌子上有个人留言。

我在其中有几列,但下一个问题是必需的:-用户ID-消息发送日期时间

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

有关详细信息,几个用户已向我发送了50-100条消息,但我想按日期时间从每个用户中只获取最后一个,如何使用linq查询呢?

没有任何代码可以向我显示关于您的模式的信息,这是一个完整的猜测,但是您只需要在日期时间之前订购并采用第一个...

对于单个用户:

// 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过滤,按日期排序并取得最高记录一样简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM