[英]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.