2013-04-12 8 views
0

Я немного OCD о моем коде и задавался вопросом, как другие люди структурируют следующий поток контроля образца. Я не нашел ничего, что передало бы мой «симпатичный» тест кода.Каков ваш предпочтительный способ очистки цикла while?

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

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

Благодаря

+0

Не правда ли (удаление элементов onne на один) медленнее, чем счетчик? –

+2

Что случилось с тем, как у вас есть? –

+0

@ChuckConway Ничего больше, чем эстетика, я думаю. Подумав, может быть, у кого-то был умный лямбда-подход. – NATO24

ответ

1

Подобно @John Kugleman приведенные выше, но с использованием в то время, а не за.

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 Ответим или Split от @ JaredPar Ответим), ваш код может выглядеть следующим образом:

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

Эта идиома не может работать, что хорошо, если у вас уже есть какие-то «chunkification», встроенный в ваш репозиторий.

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

    if (!records.Any()) 
     break; 

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

Я обычно делаю это так, как вы упомянули, но я даже добавляю задержку перед взломом. Это будет плохая идея? –

+0

@VaibhavDesai Что значит вы добавляете задержку перед взломом? –

+0

Просто спать за 10 секунд, чтобы не проверять снова и снова, если вам нечего обработать. Я предполагаю, что это будет особенность приложения. –

Смежные вопросы