假设我们有结果列表
OriginId,DestinationName,TotalTime
1,2,77 1,3,200
1,4,300
1,5,400
2,2,11
2,3,9,9 2,4,300
2,5,400
3,2,11
3,3,5 3,4,300
3,5,300
public class Result
{
public int OriginId {get;set;}
public int DestinationId {get;set;}
public int TotalTime {get;set;}
}
我想通过OriginId对结果列表进行分组,然后按TotalTime对它们进行排序,然后取2个destinationId或结果。
结果应该是这样的:
OriginId,DestinationName,TotalTime
1,3,200
1,4,300
2,2,100
2,4,300¥3,2,100¥3,4,300
通过OriginId对数据进行分组后,我没有订购TotalTime或要取得DestinationId。
我该怎么做?
答案 0 :(得分:3)
你的意思是这样吗?
list.GroupBy(x => x.OriginId)
.SelectMany(g => g.OrderBy(x => x.TotalTime).Take(2))
这应该为您提供预期的输出。这是LinqPad