簡體   English   中英

LINQ:獲取具有最大屬性值的列表中的記錄

[英]LINQ: Get records in list with the largest values for property

我不知道它有多簡單,

我有一個像這樣的對象

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

您可以使用GroupBy執行此操作:

var res = dara.GroupBy(d=>d.ActArea)
    .Select(g=>g.OrderBydescending(a=>a.ActDate).First());

這就是我要做的:

var latest =
    from x in all
    group x by x.ActArea into gxs
    from gx in gxs
        .OrderByDescending(y => y.ActDate)
        .Take(1)
    select gx;

我得到的結果是:

結果

這符合要求albiet,它不是相同的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM