LINQ:在GroupBy之后

时间:2014-02-26 06:22:16

标签: c# linq

假设我们有结果列表

  

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。
我该怎么做?

1 个答案:

答案 0 :(得分:3)

你的意思是这样吗?

list.GroupBy(x => x.OriginId)
    .SelectMany(g => g.OrderBy(x => x.TotalTime).Take(2))

这应该为您提供预期的输出。这是LinqPad

中的结果

enter image description here