2011-10-05 17 views

risposta

14

FirstOrDefault() è per quando è richiesto lo zero o più risultati nella raccolta di input e la chiamata restituisce il primo elemento se vi sono più risultati, Predefinito se nessuno.

SingleOrDefault() è per quando è previsto zero o un risultato nella raccolta di input e la chiamata restituisce l'unico risultato se è presente esattamente un risultato, Predefinito se nessun risultato e eccezione se più di un risultato.

7

SingleOrDefault genererà un'eccezione "Sequenza contiene più di un elemento" se esiste più di un elemento.

0

FirstOrDefault ci vorranno numero di righe ma solo restituire prima di esso, se è nullo può gestire l'eccezione primo prenderà numero di righe ma solo restituire prima di esso, se è nullo si getterà l'eccezione SingleOrDefault ci vorranno solo una riga, ma tornerà può gestire le eccezioni se è nullo singolo ci vorranno solo una riga ma restituirlo & non può gestire le eccezioni

Se i set di risultati restituisce 0 record:

SingleOrDefault restituisce il valore predefinito per il tipo (ad es. predefinito per int è 0) FirstOrDefault restituisce il valore di default per il tipo di Se set di risultati restituisce 1 registro:

SingleOrDefault ritorna il record FirstOrDefault ritorna il record Se il vostro restituisce il risultato molti record:

SingleOrDefault genera un'eccezione FirstOrDefault restituisce il primo record Conclusione:

Se si vuole un'eccezione a essere gettato se il set di risultati contiene molti record, utilizzare SingleOrDefault.

Se vuoi sempre 1 registro non importa quale sia il set di risultati contiene, utilizzare FirstOrDefault

Problemi correlati