【问题标题】:How to get a single last record from each user using Linq如何使用 Linq 从每个用户那里获取最后一条记录
【发布时间】:2015-02-10 10:44:14
【问题描述】:

我有一张个人信息表。

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

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

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

【问题讨论】:

  • 有代码给我们看吗?
  • 发布您的实体模型。
  • Eh ... Last() 上的消息? msdn.microsoft.com/en-us/library/vstudio/…
  • var results = personalMessages.GroupBy(pm => pm.User).SelectMany(g => g.OrderByDescending(pm => pm.Sent).Take(1));

标签: c# linq


【解决方案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));
}

应该像按用户 ID 过滤、按日期排序和获取最高记录一样简单。

【讨论】:

  • 一次一个用户可以,那么一次所有用户呢?
猜你喜欢
  • 2022-10-14
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 2020-10-01
相关资源
最近更新 更多