首页 > 编程语言 >C#的List分批数据处理

C#的List分批数据处理

时间:2024-02-28 15:26:13浏览次数:14  
标签:Index Name C# List MyData 数据处理 new public

1.直接贴代码块List的扩展

 public static class ListExtension
 {
     /// <summary>
     /// 分页数据
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="source">数据源</param>
     /// <param name="batchSize">分页大小</param>
     /// <returns></returns>
     public static IEnumerable<IEnumerable<T>> Batch<T>(this List<T> source, int batchSize)
     {
         if (source == null || batchSize <= 0) yield break;

         for (int i = 0; i < source.Count; i += batchSize)
         {
             int remaining = source.Count - i;
             int currentBatchSize = Math.Min(remaining, batchSize);
             var batch = source.Skip(i).Take(currentBatchSize);
             yield return batch;
         }
     }
 }

2.完整示例

  class Program
  {
      static void Main(string[] args)
      {
          //定义测试数据
          List<MyData> data = new List<MyData>()
          {
             new MyData(){ Index = 0, Name ="张三" },
             new MyData(){ Index = 1, Name ="李四" },
             new MyData(){ Index = 2, Name ="王五" },
             new MyData(){ Index = 3, Name ="赵六" },
          };

          //定义梳理
          int batchSize = 3;
          //扩展调用
          var lis2 = data.Batch(batchSize);
          foreach (var item in lis2)
          {
              Console.WriteLine(JsonConvert.SerializeObject(item));
          }
      }

      /// <summary>
      /// 测试数据的Data
      /// </summary>
      public class MyData
      {
          public int Index { get; set; }

          public string Name { get; set; }
      }
  }

结果:

 

完成了,好了处理速度还是比较快的

 

标签:Index,Name,C#,List,MyData,数据处理,new,public
From: https://www.cnblogs.com/geekX/p/18040512

相关文章

  • ABC303 G 题解
    区间DP。设\(f_{l,r}\)表示只考虑\([l,r]\),先手得分减后手得分的最大值(并不关心谁是先手谁是后手),区间长度\(len=r-l+1\)。然后对三种情况分别讨论:使用操作一,此时取掉左/右端点的部分先手后手互换,对答案的贡献为\(\max(a_l-f_{l+1,r},a_r-f_{l,r-1})\)。使用操作二,继......
  • ABC302 Ex 题解
    首先我们考虑\(v\)固定怎么做。实际上就是ARC111B。考虑建图,对每个\((a_i,b_i)\)建一条无向边,那么问题就变成了:对于每条边都要选择它以及其连接的一个点,最大化选出的点数。很明显可以对每个连通块分开考虑。记当前连通块的点数为\(V\),边数为\(E\)。那么有结论:该连通块对......
  • ABC301 Ex 题解
    题意:你有一张无向连通图,定义\(d(s,t)\)表示从\(s\)到\(t\)所有路径中最大边权的最小值。现在给你三个数\(A_i,S_i,T_i\),让你求出当\(A_i\)这条边的边权\(+1\)时,\(d(S_i,T_i)\)会增加多少。首先考虑一下\(A_j+1\)什么时候会对\(d(S_j,T_j)\)有影响。\(A_j>d(S_......
  • CF351D - Jeff and Removing Periods 题解
    首先做一点显然的转化:在进行第一次操作之后,可以将相同的数排在一起,这样一次就能删掉一种数。如果一开始就能删光一种数的话,那么次数就是区间颜色数,否则就是区间颜色数\(+1\)。所以现在原问题变成了两个问题:求区间内不同颜色数,判断区间内是否有某种颜色满足其出现位置构成等差数......
  • ABC320 FG
    F-FuelRoundTrip注意到路程分成了两段,所以我们也按两段dp。设\(f_{i,j,k}\)表示到第\(i\)个加油站,来程加油后油量为\(j\),回程加油后油量为\(k\)的最小代价。初始对于\(0\lei\leh\),有\(f_{0,h,i}=0\)。考虑刷表法转移(\(i\toi+1\)),令\(d=x_{i+1}-x_i\),然后根据......
  • P9755 [CSP-S 2023] 种树 题解
    首先考虑如何求出第\(i\)棵树在\([l,r]\)时间段能长多高。这个东西可以差分一下然后等差数列求和。放一下代码:inlinelllcalc(inti,intx){ if(c[i]>=0){ return(lll)b[i]*x+(lll)c[i]*x*(x+1)/2; }else{ intd=(b[i]-1)/(-c[i]); if(x<=d)return(lll)b[i]*x+(l......
  • CANOPEN——(四)PDO通讯
    PDO通讯PDO(processdataobject,过程数据对象)PDO参数:  PDO的COB_ID:PDO传输类型:同步(通过接受SYNC对象实现同步)非周期:由远程帧预触发传送,或者由设备子协议规定中的对象特定事件预触发传送。周期:传送在每1到240个SYNC消息后触发。异步由设备协议中规定的......
  • Salesforce【初级开发】认证备考攻略来袭!
    PlatformDeveloperI认证考试是面向Salesforce平台工作者的基础考试。如果你想成为Salesforce开发人员,这是一项关键考试。而且通过准备此考试获得的知识框架对所有角色都有好处,包括管理员、架构师、业务分析师、产品所有者和项目经理。 初级开发考试指南指出,备考者最好有1到2......
  • BOSHIDA DC电源模块如何故障排除与维修
    BOSHIDADC电源模块如何故障排除与维修首先,进行故障排查前,需要了解DC电源模块的工作原理和基本构造。DC电源模块通常由输入端子、输出端子、电感、电容、变压器、整流电路等组成。常见的故障包括输出电压异常、输出电流异常、过载保护触发、短路保护触发、输入电压异常等。 ......
  • docker 运行postgresql 极限简洁教程
    首先要拉取pq的image:dockerpullpostgres,拉取后可以用dockerimagels查看是否拉取镜像成功。同理,一同拉取pgadmin4方便查看数据:dockerpulldpage/pgadmin4。然后运行image,生成container,运行pq和pgadmin:注意,因为数据库需要存储空间,配合docker运行就需要volume,注意下......