你喜欢这样清理while循环的首选方法是什么?

时间:2013-04-12 18:17:06

标签: c# control-flow

我对我的代码有点强迫症,并想知道其他人如何构建以下样本控制流程。我还没有找到任何通过我的“漂亮”代码测试的东西。

var records = repo.GetRecords(batch:10);

while(records.Any())
{
    var processed = ProcessRecords(records);        
    repo.DeleteRecords(processed);      
    records = repo.GetRecords(batch:10);
}

由于

2 个答案:

答案 0 :(得分:1)

while (true)
{
    var records = repo.GetRecords(batch:10);

    if (!records.Any())
        break;

    var processed = ProcessRecords(records);        
    repo.DeleteRecords(processed);      
}

答案 1 :(得分:1)

与上面的@John Kugleman类似,但是使用while而不是for。

while (true)
{
    var records = repo.GetRecords(batch:10);

    if (!records.Any()) break;

    var processed = ProcessRecords(records);        
    repo.DeleteRecords(processed);      
}

你也可以找到这样的问题:

Split List into Sublists with LINQ

询问如何“chunkify”一系列项目。该技术可能适用于您的情况,也可能不适用。

假设一个Chunk扩展方法(类似于@TickleMeElmo的回答或者来自@JaredPar的回答),你的代码可能如下所示:

foreach (var chunk in repo.GetRecords().Chunk(10))
{
  var processed = ProcessRecords(chunk);
  repo.DeleteRecords(processed);
}

如果你已经在你的存储库中内置了某种“chunkification”,那么这个成语可能效果不好。