[c#]LINQ︰ 获取记录具有最大值的列表中的属性

标签: Linq C#
发布时间: 2017/2/28 22:45:58
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我不知道它是多么的简单,

我有喜欢的对象

public class ActionRecord
{
    public int RecID { get; set; }
    public string Action { get; set; }
    public string ActArea { get; set; }
    public int UserID { get; set; }
    public DateTime ActDate { get; set; }
}

ActionRecord 中的样本数据可以像以下︰

----------------------------------------------------------------------
RecID      Action      ActArea      UserID      ActDate
---------------------------------------------------------------------
   1       Edit        Main 1 Item      5        2014-11-01 10:01:14
   2       Delete      Sub 1 Item       2        2014-11-01 14:22:58
   3       Add         Sub 5 Item       2        2014-11-01 15:16:03
   4       Add         Sub 6 Item       2        2014-11-01 15:48:32
   5       Edit        Main 1 Item      2        2014-11-01 16:04:50
   7       Edit        Main 2 Item      5        2014-11-01 16:19:03
   8       Delete      Main 2 Item      5        2014-11-01 16:38:49
   9       Add         Main 3 Item      2        2014-11-01 16:42:25
  10       Edit        Main 3 Item      3        2014-11-01 16:45:38

我的要求是,LINQ 我需要筛选数据,以便可能只得最新行动上 ActArea 的帮助下,这里是最后的数据应该是什么样子︰

----------------------------------------------------------------------
RecID      Action      ActArea      UserID      ActDate
---------------------------------------------------------------------
  10       Edit        Main 3 Item      3        2014-11-01 16:45:38
   8       Delete      Main 2 Item      5        2014-11-01 16:38:49
   5       Edit        Main 1 Item      2        2014-11-01 16:04:50
   4       Add         Sub 6 Item       2        2014-11-01 15:48:32
   3       Add         Sub 5 Item       2        2014-11-01 15:16:03
   2       Delete      Sub 1 Item       2        2014-11-01 14:22:58

解决方法 1:

你可以用 GroupBy:

var res = dara.GroupBy(d=>d.ActArea)
    .Select(g=>g.OrderBydescending(a=>a.ActDate).First());
官方微信
官方QQ群
31647020