Non sarebbe necessario eseguire che è uguale controllo perché la vostra query restituisce solo oggetti in cui contantName è Stackoverflow
. Quando si utilizza FirstOrDefault
restituisce null
se non sono stati trovati oggetti in modo da poter fare
if(contact == null)
do something
Sai che è un tipo di riferimento se il contatto è una classe così il suo valore di default sarebbe nullo. Tuttavia, è possibile controllare che sia il tipo predefinito di qualsiasi oggetto (riferimento o valore) utilizzando default
.
if(contact == default(Contact))
do something
Come accennato nei commenti, si può eventualmente rendere il codice più efficiente, utilizzando il sovraccarico di FirstOrDefault
che prende un predicato.
FirstOrDefault(m => m.contactName == "Stackoverflow")
È inoltre possibile modificare il valore predefinito restituito se il programma ha bisogno di lavorare con qualcosa di diverso da un null
o 0
. Ad esempio
Contact defaultContact = new Contact();
defaultContact.ContactName = "StackExchange";
Contact contact = dbo.contact.Where(m=>m.contactName == "Stackoverflow")
.DefaultIfEmpty(defaultContact).First();
Quanto sopra restituire l'oggetto defaultContact
se nessun altro oggetto è stato trovato (invece di null ritorno). Se si esegue questa operazione, non è necessario controllare null
o default(T)
perché si sa che si dispone di un oggetto Contact
.
Una nota di più - è meglio usare 'FirstOrDefault (m => m.contactName == "StackOverflow")' –
+1, ha aggiunto di rispondere :) – keyboardP
Funziona solo se 'contact' è un tipo di riferimento, usando' default() 'è migliore. –