2012-09-18 129 views
0

我與掙扎的東西我敢肯定,我應該可以做的相當快使用LINQ到 - 目標對象集合優化

有27個花朵,需要含5項Flower[]集合劈了過來,大致6條記錄;

List<Flowers[]>應該包含6個Flowers[]實體,並且每個Flowers[]數組項應該包含5個花對象。

目前,我有這樣的:

List<Flowers[]> flowers; 
int counter = 0; 
List<Flowers>.ForEach(delegate (Flower item) { 
    if (counter <= 5){ 
     // add flowers to array, add array to list 
    } 
}); 

我試圖優化這個,因爲它是笨重。

[更新]

我也許可以在對象上的數組推,去除心中已經已通過運行該項目,但有沒有一個更簡單的方法?

+0

所以你實際上希望做的SelectMany的'反向()',打破了27個天體的單個集合分爲6組5。你關心哪5個組合在一起?他們是否必須按順序分組,或按其他標準分組?或者它可以是隨機的? – psubsee2003

+0

我並不太擔心分組,隨機是完全可以接受的。 – JadedEric

回答

1
var ITEMS_IN_GROUP = 5; 
var result = list.Select((Item, Index) => new { Item, Index }) 
       .GroupBy(x => x.Index/ITEMS_IN_GROUP) 
       .Select(g => g.Select(x=>x.Item).ToArray()) 
       .ToList(); 

你也可以試試morelinqBatch