第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何批量遍歷IEnumerable

如何批量遍歷IEnumerable

C#
一只萌萌小番薯 2019-11-27 13:14:37
我正在開發(fā)ac#程序,該程序具有一個“ IEnumerable用戶”,其中存儲了400萬用戶的ID。我需要遍歷Ienummerable并每次提取一個批處理1000 id,以使用另一種方法執(zhí)行一些操作。我如何從Ienumerable的開始一次提取1000個id ...做其他事情然后獲取下一批1000等等?這可能嗎?
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻1831條經(jīng)驗 獲得超9個贊

聽起來您需要使用對象的“跳過”和“獲取”方法。例:


users.Skip(1000).Take(1000)

這將跳過前1000個,并采用下一個1000。您只需要增加每次通話跳過的數(shù)量


您可以將整數(shù)變量與“跳過”參數(shù)一起使用,并且可以調整要跳過的量。然后可以在方法中調用它。


public IEnumerable<user> GetBatch(int pageNumber)

{

    return users.Skip(pageNumber * 1000).Take(1000);

}


查看完整回答
反對 回復 2019-11-27
?
當年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

最簡單的方法可能就是使用GroupByLINQ中的方法:


var batches = myEnumerable

    .Select((x, i) => new { x, i })

    .GroupBy(p => (p.i / 1000), (p, i) => p.x);

但是,對于更復雜的解決方案,請參閱此博客文章,以了解如何創(chuàng)建自己的擴展方法來執(zhí)行此操作。為后代在此復制:


public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> collection, int batchSize)

{

    List<T> nextbatch = new List<T>(batchSize);

    foreach (T item in collection)

    {

        nextbatch.Add(item);

        if (nextbatch.Count == batchSize)

        {

            yield return nextbatch;

            nextbatch = new List<T>(); 

            // or nextbatch.Clear(); but see Servy's comment below

        }

    }


    if (nextbatch.Count > 0)

        yield return nextbatch;

}


查看完整回答
反對 回復 2019-11-27
  • 3 回答
  • 0 關注
  • 1154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號