![](/img/trans.png)
[英]Linq - get objects with a list property that does not contain values in another list
[英]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.