IEnumerable<IEnumerable<object>> rows = new List<List<object>
{
//Columns
new List<object> { 10, 20, 30, 40, 50 },
new List<object> { 10, 20, 30, 40, 50 },
new List<object> { 10, 20, 30, 40, 50 },
new List<object> { 10, 20, 30, 40, 50 }
}
我基本上想要分组所有的10个,20个,30个,40个,50个。
我想用Linq以最好的方式做到这一点。请注意我的收藏量可以达到2000万或更多。
我能够通过执行以下操作来实现它,但是当我为组集合执行每个操作时,它会让我出现内存异常。
IEnumerable<IEnumerable<object>> rows = Enumerable.Repeat(new List<object> { 10, 20, 30, 40, 50 }, 20000000);
var group = rows.SelectMany(x => x.Select((InnerValue, Index) => new { Index, InnerValue })).GroupBy(x => x.Index);
预期结果如下:
var expectedResult = new List<List<object>
{
new List<object> { 10, 10, 10, 10, 10 },
new List<object> { 20, 20, 20, 20, 20 },
new List<object> { 30, 30, 30, 30, 30 },
new List<object> { 40, 40, 40, 40, 40 }
}
感谢。
答案 0 :(得分:0)
如果您想使用linq :),可以使用以下查询执行此操作:
List<List<object>> expectedResult =
rows.SelectMany(r => r)
.ToLookup(k => k, v => v)
.Select(kv => kv.ToList())
.ToList();