如何获得最大的时间戳和LINQ GROUPBY另一个领域实体 [英] How to get the max timestamp and groupby another field in LINQ to Entities
问题描述
我有一个实体以下字段
GUID TASKID,
GUID SubTaskId,
DateTime时间戳
I have an Entity with the following fields GUID TaskId, GUID SubTaskId, DateTime Timestamp
TASKID可能一到许多与SubTaskId。这就像几乎复合键。
The TaskId may be one-to-many with the SubTaskId. It's like a composite key almost.
我想编写一个表达式或导致中的每个TASKID
即
I would like to write an expression or expressions resulting in the newest among each TaskId i.e.
TASKID SubTaskId时间戳结果
1 A 2010-11-22 15:48:49.727 的结果
1B中的 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 的
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
将导致只包含一个序列:结果
TASKID SubTaskId时间戳结果
1B中的 2010-11-22 16:24:51.117 的结果
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
这表达的作品就好了显示所有TASKID的和时间戳
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
};
但我想只显示最新的时间戳每个任务id。我所有的努力在添加最多的表情失败。过帐(http://stackoverflow.com/questions/2034800/how-do-you-find-the-group-wise-max-in-linq)似乎接近,但我不能把它翻译成什么工作。也许的foreach
是必要的。
推荐答案
这个怎么样?
var q1 =
from req in myEntity
group req by req.TaskId into g
let topReq = g.OrderByDescending(r => r.Timestamp).FirstOrDefault()
select new
{
topReq.TaskId,
topReq.SubTaskId,
topReq.Timestamp
};
这篇关于如何获得最大的时间戳和LINQ GROUPBY另一个领域实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!