zoukankan      html  css  js  c++  java
  • C# linq 如何分批循环遍历IEnumerable?

    我正在开发具有“IEnumerable用户”的c#程序,其中存储了400万用户的ID。我需要遍历Ienummerable并每次提取一批1000个ID,以另一种方法执行一些操作。

    我如何从Ienumerable的开始一次提取1000个ID ...做一些其他事情然后获取下一批1000个

    可以使用linq morelinq库的 batch方法(可从NuGet获得):

    foreach(IEnumerable<User> batch in users.Batch(1000))
       // use batch
    

    如果简单使用库不是一种选择,则可以重新使用实现:

    public static IEnumerable<IEnumerable<T>> Batch<T>(
            this IEnumerable<T> source, int size)
    {
        T[] bucket = null;
        var count = 0;
    
        foreach (var item in source)
        {
           if (bucket == null)
               bucket = new T[size];
    
           bucket[count++] = item;
    
           if (count != size)                
              continue;
    
           yield return bucket.Select(x => x);
    
           bucket = null;
           count = 0;
        }
    
        // Return the last bucket with all remaining elements
        if (bucket != null && count > 0)            
            yield return bucket.Take(count);            
    }
    
    yield return bucket;
  • 相关阅读:
    关于《哈利波特》书的购买方案
    你的灯亮着吗读后感三
    jmeter做接口测试
    jmeter的分布式部署
    JMeter的定时器
    我的功能测试用例是怎么写
    常见的功能测试检查点
    测试用例概论
    敏捷开发与迭代开发
    软件测试模型
  • 原文地址:https://www.cnblogs.com/51net/p/13874750.html
Copyright © 2011-2022 走看看