簡體   English   中英

在LINQ中獲得帶有最小日期的行?

[英]Get Row with Min Date in LINQ?

我有一個帶有日期/時間的表,我想找到帶有最小日期的整行。 請參閱以下示例:

ID     First     Last     ADateTime             Processed
1      Joe       Smith    09/06/2013 04:00 AM   True
1      Joe       Smith    09/06/2013 02:00 AM   False
2      Jack      Jones            
3      John      Jack     09/05/2013 06:00 AM   True
3      John      Jack     09/26/2013 02:00 AM   False

我希望從查詢中獲得以下內容:

ID     First     Last     ADateTime             Processed
1      Joe       Smith    09/06/2013 02:00 AM   False
2      Jack      Jones            
3      John      Jack     09/05/2013 06:00 AM   True

我有一個接近的LINQ語句:

        var uniqueGuys = from d in tests.AsEnumerable()
                         group d by d.ID into g
                         let f = g.FirstOrDefault()
                         where f != null
                         select new
                         {
                             f.ID,
                             f.First,
                             f.Last,
                             ADateTime = g.Min(c => c.DateTime),
                             f.Processed
                         };

這給我3個ID中的每個ID的最小日期正確,但是其余信息不正確。 例如,對於ID 1,我得到的Joe Smith的日期為09/06/201 2:00 AM,這是對的,但是它顯示為True,而不是附加到該行的false。 看起來它只是獲取了最小的日期/時間,但隨后它可以找到其他內容的第一條記錄。 有沒有辦法用最少的ADateTime來獲得整行?

您可以執行orderby,然后選擇第一個。

如:

var uniqueGuys = from d in from d in tests.AsEnumerable()
                 group d by d.ID into g
                 select g.OrderBy(p => p.DateTime).First(); 

暫無
暫無

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

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