2016-03-13 45 views
0

在下面的代碼中,我試圖將每個組內的最後五個元素作爲單個列表返回,如下圖所示。下面的代碼無法實現這一點,而是它將原始數據集(範圍爲0-19)作爲List返回。LINQ - 按組限制大小

如何更改下面的代碼來返回下面的圖片?

void Main() 
{ 
var dataSet = Enumerable.Range(0, 20); 
var elementsInEachGroup = 5; 

var answer = dataSet.GroupBy(e => 
    new 
    { 
     oddEven = e % 2, 
     e 
    }) 
    .SelectMany(group => group.Skip(Math.Max(0, group.Count() - elementsInEachGroup))) 
    .ToList(); 

answer.Dump(); 
} 

answer

+1

我不明白你在說什麼。另外,問題是什麼? – DavidG

回答

3

GroupBy表達包括該元件本身,所以每個組將只包含單個項目。從GroupBy表達式中刪除e,它會在圖片中給出結果。

.GroupBy(e => 
    new 
    { 
     oddEven = e % 2 
    }) 

或者簡單

.GroupBy(e => e % 2)