[英]Split list into list of horizontally grouped sub lists
我有以下項目清單:
List: [Item 1, Item 2, Item 3, Item 4, Item 5, Item 6, Item 7, Item 8, Item 9]
我需要以下輸出:
List 1: [Item 1, Item 4, Item 7]
List 2: [Item 2, Item 5, Item 8]
List 3: [Item 3, Item 6, Item 9]
經過一些研究后,我“提出”了以下內容:
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int parts)
{
var list = new List<T>(source);
int defaultSize = (int)((double)list.Count / (double)parts);
int offset = list.Count % parts;
int position = 0;
for (int i = 0; i < parts; i++)
{
int size = defaultSize;
if (i < offset)
size++;
yield return list.GetRange(position, size);
position += size;
}
}
這可以工作,但垂直分配項目,我需要水平展開。
思想? 謝謝!
===== UPDATE ====
如果源中的計數未按部分均分,則此結果必須如下:
List 1: [Item 1, Item 5, Item 9]
List 2: [Item 2, Item 6, Item 10]
List 3: [Item 3, Item 7]
List 4: [Item 4, Item 8]
會這樣嗎?
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int parts)
{
var list = new List<T>(source);
foreach (var group in list.GroupBy(x => list.IndexOf(x) % parts))
{
yield return group.ToList();
}
}
工作?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.