我有一张带有日期/时间的表格,我想找到最小日期的整行。见这个例子:
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的完整行?
答案 0 :(得分:6)
您可以执行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();