如何在列表<t>上使用linq生成列表<lists <t>&gt;在C#中</lists <t> </t>

时间:2010-08-17 23:52:21

标签: c# linq generics list sorting

我已经看到了相反问题的例子,但它们并没有帮助我解决这个问题。

我有一个List,其中T有一个int权重。我想把它分成按重量分组的5个列表 如果我有以下T和各自的重量
答:1
B:2
C:3
d:4
E:5
F:6
G:7
H:8
我:9
记者:-11
我希望{A,B,C,D,E,F,G,H,I,J}被分类为{{J,A,B,C,D},{E,F,G,H,I }}
我并不担心列表中的项目数量不能被5整除的情况。我并不担心列表中的内容被排序。例如,我对{{J,A,B,C,D},{F,I,G,H,E}}或甚至{{F,I,G,H,E},{J}感到满意,A,B,C,D}}

1 个答案:

答案 0 :(得分:3)

var query = data.OrderBy(x => x.Weight)
                .Select((x, i) => new { Value = x, Group = i / 5 })
                .GroupBy(x => x.Group, x => x.Value, (k, g) => g.ToList())
                .ToList();

如果您对query仅仅IEnumerable<IEnumerable<T>>而不是List<List<T>>的输入感到满意,那么您可以完全忽略ToList次来电:

var query = data.OrderBy(x => x.Weight)
                .Select((x, i) => new { Value = x, Group = i / 5 })
                .GroupBy(x => x.Group, x => x.Value);