2014-05-22 43 views
1

我不认为这是重复的。我想返回多个记录,每个记录都有给定类型的最大日期。我可以做到这一点是几条线我只是想知道它是否可以在一个?全部按条目选择并按元素分组

所以我有一个表

int, DateTime, varchar, int 
id, date,  message, type 
1, 2000-1-1, hello, 2 
2, 2000-1-2, goodby, 1 
3, 2000-1-1, again, 1 

有没有办法恢复到最早的记录每种类型的? 以便记录ID 2和ID 1

+0

可能重复的[LINQ利用MAX()选择的单个行(http://stackoverflow.com/questions/9114863/linq-using-max-to-select-a-single-row) – Rawling

回答

1

您可以将您的数据按type分组,然后按date排序每个组并取第一个项目。

var result = yourTable.GroupBy(d => d.type) 
         .Select(g => g.OrderByDescending(x => x.date).First()); 
+0

这是一件美丽的事情。我有三条这样做的丑陋线条 – user2472565