杨紫身材有料,方腊,政法委书记退出常委
针对长度较大的list对象,可以分组批量进行处理, 如:长度为1000的list
/****************************************************************************** * 名称:list分组迭代器 * 说明:针对长度较大的list对象,可以分组批量进行处理 * 如:长度为1000的list<int>对象,可分为10组,每组100条,对数据进行业务逻辑处理 * 作者:sybs * 时间:2018-10-15 * **************************************************************************/ namespace system.collections.generic { /// <summary> /// list分组迭代器 /// </summary> public class listgroupiterator<t> { private int _groupsize = 1; /// <summary> /// 分组大小(缺省值为1) /// </summary> public int groupsize { get => _groupsize; set => _groupsize = value < 1 ? 1 : value; } /// <summary> /// list数据源 /// </summary> public list<t> source { get; set; } public listgroupiterator() { } public listgroupiterator(int groupsize) : this(groupsize, null) { } public listgroupiterator(list<t> list) : this(1, list) { } public listgroupiterator(int groupsize, list<t> list) { this.groupsize = groupsize; this.source = list; } /// <summary> /// listgroupiterator迭代器 /// </summary> /// <returns></returns> public ienumerator<list<t>> getenumerator() { if (source?.count > 0) { var ps = convert.toint32(math.ceiling(source.count * 1.0d / groupsize)); var model = source.count % groupsize; for (int i = 0; i < ps; i++) { var len = ps - i == 1 && model > 0 ? model : groupsize; yield return source.getrange(groupsize * i, len); } } } /// <summary> /// 将list<t>实例赋值给listgroupiterator对象 /// </summary> /// <param name="list"></param> public static implicit operator listgroupiterator<t>(list<t> list) { return new listgroupiterator<t> { source = list }; } } }
using system; using system.collections.generic; namespace demo { class program { static void main() { listgroupiterator<int> lg1 = new list<int>() { 1, 2, 3, 4, 5 }; listgroupiterator<int> lg2 = new listgroupiterator<int>(new list<int> { 1, 2, 3, 4, 5 }); listgroupiterator<int> lg3 = new listgroupiterator<int>(3, new list<int>() { 1, 2, 3, 4, 5 }); lg3.source.addrange(new list<int>() { 6, 7, 8, 9 }); lg3.groupsize = 2; foreach (var item in lg3) { console.writeline(string.join(",", item)); } console.readline(); } } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论