Qualcuno può spiegare come DefaultIfEmpty()
può essere utilizzato in LINQ. Ho preparato del materiale ma ho ancora bisogno di qualcosa di solido per vedere quale sia il suo utilizzo.DefaultIfEmpty in LINQ
risposta
In pratica restituisce una raccolta con un singolo elemento nel caso in cui la raccolta di origine sia vuota.
var numbers = new int[] {1, 2, 3};
var aNumber = numbers.First();
restituisce 1
ma
var numbers = new int[];
var aNumber = numbers.DefaultIfEmpty(12).Single();
restituisce 12 come la raccolta è vuota
Oh, ok. Un po 'sciocco che invece non puoi fare '.FirstOrDefault (12)'. – Ryan
DefaultIfEmpty restituisce un elemento, mentre DefaultIfEmpty restituisce una raccolta che può quindi essere sovrapposta a un'altra operazione linq nella catena. –
@ vc74: era il primo 'DefaultIfEmpty' che voleva essere' FirstOrDefault' (nel tuo commento)? – Chris
La differenza è la DefaultIfEmpty restituisce un insieme di oggetti durante FirstOrDefault restituisce un oggetto. Se non sono stati trovati risultati DefaultIfEmpty restituisce ancora un Enumerable con un singolo elemento che ha il suo valore predefinito, mentre FirstOrDefault restituisce T stesso.
Si utilizza DefaultIfEmpty se è sempre necessario un risultato di raccolta, ad esempio per creare join esterni. Si utilizza FirstOrDefault se si ha sempre bisogno di un risultato di oggetto (non di una raccolta), ad esempio se si desidera ottenere il primo oggetto (o solo l'articolo) durante la ricerca di qualcosa come un ID o un'e-mail univoca e si desidera restituire l'elemento vuoto predefinito se l'oggetto che stavi cercando non è stato trovato.
- 1. Linq Left Outer Join - DefaultIfEmpty Errore
- 2. Linq, OrderByDescending, First, e il nefasto DefaultIfEmpty
- 3. Linq unirsi iquery, come utilizzare DefaultIfEmpty
- 4. DefaultIfEmpty() non funziona
- 5. Utilizzare .DefaultIfEmpty() anziché .FirstOrDefault() ?? String.Empty;
- 6. * Giusto * outer join in LINQ
- 7. Selezionare in LINQ con uno strano valore di @ p__linq__0
- 8. Restituisce null invece il valore predefinito in LINQ
- 9. È un join esterno possibile con Linq a Entity Framework
- 10. La sequenza non contiene elementi - LINQ, MVC, Media
- 11. Conteggio dell'associazione figlio principale schiacciato in LINQ
- 12. Seleziona tutte le colonne dopo JOIN in LINQ
- 13. Somma prodotto EF Linq in assenza di record
- 14. LINQ - Registrazione Sinistra, Gruppo A, e il conte
- 15. NHibernate 3 - LEFT JOIN soluzione ri-Linq
- 16. Unione disgiunto in LINQ
- 17. Linq IN Operator
- 18. testo Cerca in Linq
- 19. Pivoting in Linq
- 20. LINQ SingleOrDefault in Typescript
- 21. String.IsNullOrWhiteSpace in LINQ Expression
- 22. Sequenza vuota in LINQ
- 23. Nhibernate Linq In Clause
- 24. analoghi LINQ in Scala?
- 25. Dove predicti in LINQ
- 26. Int.Parse in Linq Expression
- 27. MySqlDateTime in LINQ Query
- 28. Linq in Per Loop
- 29. Combination Generator in Linq
- 30. Join condizionali in LINQ
Cosa non capisci del suo utilizzo? – Oded
Non capisco davvero per cosa lo usereste. Restituisce un 'IEnumerable', quindi se hai usato '.DefaultIfEmpty(). Primo()' è lo stesso di '.FirstOrDefault()' ... [Gli esempi su MSDN] (http://msdn.microsoft. it/it/us/library/bb360179.aspx) sono davvero pessimi. –
Ryan
Un uso è quindi non è necessario suddividere il codice con i test 'if (x! = Null)'. – ChrisF