我已经看到了相反问题的例子,但它们并没有帮助我解决这个问题。
我有一个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}}
答案 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);