我有一张包含个人信息的表格。
我有几列,但这个问题需要下一个: - 用户身份 - 消息发送日期时间
我想从每个用户那里得到最后一条消息,并且不了解如何为此目标编译所需的linq查询。
有关详细信息,有几个用户向我发送了50-100封邮件,但我希望每个用户只能通过日期时间获取最后一封邮件,如何使用linq查询?
答案 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过滤一样简单,按日期排序并记录最高记录。