我相信这对你来说是另一个简单的LINQ大师。有没有什么办法可以将List分成几个单独的Some对象列表,使用item index作为每个分割的分隔符?
让我举例说明:我有一个List<T>
,我需要一个List<List<T>>
或List<T>[]
,这样每个结果列表都会包含一组原始列表中的3个项目(顺序)。
示例:
原始列表:[cat, dog, pane, wolf, pig, sun, queen, fox, x'mas, yak, ice, mark, cold]
结果列表:[[cat, dog, pane], [wolf, pig, sun], [queen, fox, x'mas], [yak, ice, mark], [cold]]
答案 0 :(得分:0)
只是一个天真的幻想:
var animals = new[] { "cat", "dog", "pane", "wolf", "pig", "sun", "queen", "fox", "x'mas", "yak", "ice", "mark", "cold" };
var grouped = Enumerable.Range(0, animals.Length)
.Where(i => i%3 == 0)
.Select(i => animals.Skip(i).Take(3).ToList())
.ToList();
答案 1 :(得分:0)
您可以将整数除法技巧与GroupBy
:
List<List<string>> lists = originalList
.Select((s, index) => new { String = s, Index = index})
.GroupBy(x => x.Index / 3)
.Select(g => g.Select(x => x.String).ToList())
.ToList();
C#中的整数除法会截断余数,因此0,1,2 / 3
都属于零组,3,4,5 / 3
属于一组,依此类推。