Linq distinct&max

ani*_*lca 10 c# linq linq-to-sql

我要查询这个表:

symbol    time
------    ----------
aaa       2013-04-18 09:10:28.000    
bbb       2013-04-18 09:10:27.000    
aaa       2013-04-18 09:10:27.000    
bbb       2013-04-18 09:10:26.000
Run Code Online (Sandbox Code Playgroud)

对于具有最大时间值的所有不同符号,我需要一行.我如何编写linq查询?

提前致谢,

Ser*_*kiy 18

通过组行的符号,然后从最高每个组项目选择时间(是根据上下文数据库表名):

from r in Table
group r by r.symbol into g
select g.OrderByDescending(x => x.time).First()
Run Code Online (Sandbox Code Playgroud)

与方法语法相同:

Table.GroupBy(r => r.symbol)
     .Select(g => g.OrderByDescending(x => x.time).First());
Run Code Online (Sandbox Code Playgroud)

  • 如果使用`GroupBy`,则确保至少有一行,因此您可以使用`First`而不是`FirstOrDefault`. (2认同)

Pra*_*ana 9

试试这个

var q = MyTable.GroupBy(x => x.symbol )
               .Select(g => g.OrderByDescending(i => i.time).First());
Run Code Online (Sandbox Code Playgroud)

或者像这样使用max

 var data = from r in MyTable
                   group r by r.symbol into g
                   select new { name= g.Key, data= g.Max(a=>a.time) };
Run Code Online (Sandbox Code Playgroud)