Qual è la procedura migliore per verificare se una raccolta contiene elementi?Come verificare correttamente IEnumerable per i risultati esistenti
Ecco un esempio di ciò che ho:
var terminalsToSync = TerminalAction.GetAllTerminals();
if(terminalsToSync.Any())
SyncTerminals(terminalsToSync);
else
GatewayLogAction.WriteLogInfo(Messages.NoTerminalsForSync);
Procedimento GetAllTerminals()
eseguirà una procedura memorizzata e, se ci ritorno conseguenza, (Any()
è true
), SyncTerminals()
volontà scorrere gli elementi; quindi enumerandolo nuovamente ed eseguendo la stored procedure per la seconda volta.
Qual è il modo migliore per evitare questo?
Mi piacerebbe una buona soluzione che possa essere utilizzata anche in altri casi; possibilmente senza convertirlo in List
.
Grazie in anticipo.
perché è necessario eseguire la procedura di acquisto la seconda volta? Terminali ToSync contiene già il risultato SP vero? –
Non ho bisogno, né voglio eseguirlo per la seconda volta. Quello che ho detto nella mia domanda è stato che poiché GetAllTerminals() restituisce IEnumerable entrambi Any() e foreach lo chiamerà e la procedura terminerà chiamata due volte. Mi piacerebbe evitare questo comportamento ed essere ancora in grado di verificare se ci sono delle righe. –
Vedi Marc Gravell @ http://stackoverflow.com/questions/5047349/how-to-check-if-ienumerable-is-null-or-empty ?? – SpaceBison