如何获取最大时间戳并按 LINQ to Entities 中的另一个字段进行分组
我有一个具有以下字段的实体 GUID 任务ID, GUID 子任务Id, DateTime Timestamp
TaskId 可以与 SubTaskId 一对多。它几乎就像一个复合键。
我想编写一个或多个表达式,从而得出每个 TaskId 中的最新值 即
TaskId SubTaskId 时间戳
1 A 2010-11-22 15:48:49.727
1 B 2010-11-22 16:24:51.117
2 C 2010-11-15 11:49:05.717
2 D 2010-11-15 14:02:11.467
将导致序列仅包含:
任务 ID 子任务 ID 时间戳
1 B 2010-11-22 16:24:51.117
2 D 2010-11-15 14:02:11.467
这个表达式可以很好地显示所有 TaskId 和时间戳,
var q1 =
from req in myEntity
orderby req.TaskId
select new
{
req.TaskId,
req.SubTaskId,
req.Timestamp
};
但我只想显示每个 TaskId 的最新时间戳。我向表达式添加最大值的所有尝试都失败了。该帖子(http://stackoverflow.com/questions/2034800/how-do-you-find-the-group-wise-max-in-linq)似乎很接近,但我无法将其转化为有效的东西。也许需要一个foreach
。
I have an Entity with the following fields
GUID TaskId,
GUID SubTaskId,
DateTime Timestamp
The TaskId may be one-to-many with the SubTaskId. It's like a composite key almost.
I would like to write an expression or expressions resulting in the newest among each TaskId
i.e.
TaskId SubTaskId Timestamp
1 A 2010-11-22 15:48:49.727
1 B 2010-11-22 16:24:51.117
2 C 2010-11-15 11:49:05.717
2 D 2010-11-15 14:02:11.467
Would result in a sequence containing only:
TaskId SubTaskId Timestamp
1 B 2010-11-22 16:24:51.117
2 D 2010-11-15 14:02:11.467
This expression works just fine for showing all TaskId's and TimeStamps
var q1 =
from req in myEntity
orderby req.TaskId
select new
{
req.TaskId,
req.SubTaskId,
req.Timestamp
};
but I would like to show only the latest Timestamp for each TaskId. All my attempts at adding a max to the expression fail. The posting (http://stackoverflow.com/questions/2034800/how-do-you-find-the-group-wise-max-in-linq) seemed close, but I couldn't translate it into something working. Perhaps a foreach
is needed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个怎么样?
How about this?