2014-02-26 46 views
0

假設我們有結果LINQ:取的GroupBy後

OriginId,DestinationName,TOTALTIME
1,2,700
1,3,200
1,4,300
1的列表,5,400
2,2,100
2,3,900
2,4,300
2,5,400
3,2,100
3,3,500
3,4,300
3,5,400

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

如果將它們分組由OriginId你不能排序'TotalTime'因爲每個組中有你多個'TotalTimes',所以你有'DestinationNames' – wudzik

回答

3

你的意思是這樣的嗎?

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

這應該給你的預期output.Here是導致LinqPad

enter image description here

+0

非常好的答案。 +1用於'SelectMany'的這種特殊用途。 – Enigmativity