[LINQ].NET/C#應用程序中使用LINQ分組排序后獲取每組第一條記錄的實現方法有哪些?


問題描述

當前有一張數據表,包含了如下的字段信息:

Id, AccountId, Version, DownloadNo, Date 

部分示例數據如下:

Id AccountId Version DownloadNo Date
28092 15240000 1.0.7.1782 2009040004731 2009-01-20 13:10:22.000
28094 61615000 1.0.7.1782 2009040007696 2009-01-20 13:11:38.000
28095 95317000 1.0.7.1782 2009040007695 2009-01-20 13:10:18.000
28101 15240000 1.0.7.1782 2009040004740 2009-01-20 14:10:22.000
28103 61615000 1.0.7.1782 2009040007690 2009-01-20 14:11:38.000
28104 95317000 1.0.7.1782 2009040007710 2009-01-20 14:10:18.000

在.NET/C#應用程序中,使用LINQ分組排序后獲取每組第一條記錄的實現方法有哪些?

方案一

如果只需要每個用戶(AccountId)的日期部分,可以使用如下的LINQ實現,如:

var q = from n in table group n by n.AccountId into g select new {AccountId = g.Key, Date = g.Max(t=>t.Date)}; 

或者,需要每個用戶的完整信息,則:

var q = from n in table group n by n.AccountId into g select g.OrderByDescending(t=>t.Date).FirstOrDefault(); 

方案二

lambda表達式實現的方法:

var q = _context .lasttraces .GroupBy(s => s.AccountId) .Select(s => s.OrderByDescending(x => x.Date).FirstOrDefault()); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM