如何获得最大的时间戳和LINQ GROUPBY另一个领域实体 [英] How to get the max timestamp and groupby another field in LINQ to Entities

查看:162
本文介绍了如何获得最大的时间戳和LINQ GROUPBY另一个领域实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个实体以下字段
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆