使用LINQ將集合拆分為‘N’部件?有什么好辦法把一個(gè)集合分割成n和LINQ的零件?當(dāng)然也不一定均衡。也就是說(shuō),我想將集合劃分為子集合,每個(gè)子集合都包含元素的子集,其中最后一個(gè)集合可以是粗糙的。
3 回答

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
static class LinqExtensions{ public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts) { int i = 0; var splits = from item in list group item by i++ % parts into part select part.AsEnumerable(); return splits; }}

臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
沒(méi)有昂貴的乘法、除法或模運(yùn)算符 所有操作均為O(1)(見(jiàn)下文注) 為IEnumerable<>源代碼工作(不需要計(jì)數(shù)屬性) 簡(jiǎn)約
public static IEnumerable<IEnumerable<T>> Section<T>(this IEnumerable<T> source, int length){ if (length <= 0) throw new ArgumentOutOfRangeException("length"); var section = new List<T>(length); foreach (var item in source) { section.Add(item); if (section.Count == length) { yield return section.AsReadOnly(); section = new List<T>(length); } } if (section.Count > 0) yield return section.AsReadOnly();}
myEnum.Section(myEnum.Count() / number_of_sections + 1)
- 3 回答
- 0 關(guān)注
- 405 瀏覽
添加回答
舉報(bào)
0/150
提交
取消