2017-06-20 50 views
-1

我有这样一个表,如何从StartDate中选择最新的Tid变成下表? (LINQ)

SLId SId  TId  StartDate 
1  41  1  2017-06-15 
2  104  2  2017-06-16 
3  113  3  2017-06-16 
4  154  4  2017-06-16 
5  17  1  2017-06-19 
6  41  2  2017-06-19 
7  104  3  2017-06-19 
8  282  4  2017-06-19 

我怎么能选择从起始日期的最新TID变成下面的表?通过使用Linq

Sid Tid 
41 2 
104 3 
113 3 
154 4 
17 1 
282 4 

谢谢!

+0

db.someTable.OrderByDescending(p值=> p.StartDate).GroupBy(p值=> p.SId)。选择(p值=> p.FirstOrDefault()); –

回答

1

GroupBy() SID(这必须是在你的结果是唯一的)和OrderBy()起始日期

List<int> result = items.GroupBy(x => x.SId) 
         .Select(x => x.OrderBy(y => y.StartDate).Last().TId) 
         .ToList(); 

https://dotnetfiddle.net/iU2PHK

0

如果你有你的数据集可以通过起始日期列顺序它并选择第一个结果类似此:

var dataset = //fill your dataset;  
dataset.OrderByDescending(x => x.StartDate).First();