¿Alguien puede explicar cómo se puede usar DefaultIfEmpty()
en LINQ? He preparado algo de material pero todavía necesito algo sólido para ver cuál es su uso.DefaultIfEmpty en LINQ
Respuesta
Básicamente devuelve una colección con un solo elemento en caso de que la colección de origen esté vacía.
var numbers = new int[] {1, 2, 3};
var aNumber = numbers.First();
devuelve 1
pero
var numbers = new int[];
var aNumber = numbers.DefaultIfEmpty(12).Single();
devuelve 12 como la colección está vacía
Oh, está bien. Aunque es un poco tonto que no puedas hacer '.FirstOrDefault (12)' en su lugar. – Ryan
DefaultIfEmpty devuelve un elemento mientras DefaultIfEmpty devuelve una colección que luego se puede conectar en cascada a otra operación de linq en la cadena. –
@ vc74: fue ese primer 'DefaultIfEmpty' destinado a ser' FirstOrDefault' (en tu comentario)? – Chris
La diferencia es la DefaultIfEmpty devuelve una colección de objetos mientras FirstOrDefault devuelve un objeto. Si no se encontraron resultados, DefaultIfEmpty aún devuelve un Enumerable con un solo elemento que tiene su valor predeterminado, mientras que FirstOrDefault devuelve T mismo.
Utiliza DefaultIfEmpty si necesita siempre un resultado de la colección, por ejemplo para crear uniones externas. Utiliza FirstOrDefault si siempre necesita un resultado de objeto (no una colección), por ejemplo, si desea obtener el primer elemento (o solo artículo) cuando busca algo como una ID o correo electrónico único, y desea devolver el artículo vacío predeterminado si el artículo que estabas buscando no fue encontrado.
- 1. Linq, OrderByDescending, Primero, y el infame DefaultIfEmpty
- 2. Linq Unión exterior izquierda - DefaultIfEmpty Error
- 3. DefaultIfEmpty() no funciona
- 4. Usando DefaultIfEmpty en LINQ - problema de la sustitución de un valor nulo para un valor predeterminado
- 5. * combinación * Right * en LINQ
- 6. Es posible una unión externa con Linq to Entity Framework
- 7. Asesoramiento sobre la mejor forma de estructurar/formatear una consulta LINQ a XML?
- 8. Seleccione todas las columnas después de UNIR en LINQ
- 9. NHibernate 3 - combinación izquierda re-solución LINQ
- 10. LINQ - combinación izquierda, Grupo A, y el conde
- 11. Devolviendo un único valor con Linq a SQL
- 12. ¿LINQ funciona en Index?
- 13. String.IsNullOrWhiteSpace en LINQ Expresión
- 14. Secuencia vacía en LINQ
- 15. máximo en LINQ
- 16. ?: Operador en consulta LINQ
- 17. Dónde Predica en LINQ
- 18. Rendimiento LINQ en memoria
- 19. LINQ análogos en Scala?
- 20. Flatten List en LINQ
- 21. DateDiff en LINQ
- 22. Seleccionar caso en LINQ
- 23. Operador "IN" en Linq
- 24. sentencia switch en LINQ
- 25. Unión disjunta en LINQ
- 26. Eliminar consulta en Linq
- 27. Subconsulta de LINQ EN
- 28. Giro en Linq
- 29. Actualización en Linq
- 30. "entre" en LINQ C#
¿Qué no entiendes acerca de su uso? – Oded
Realmente no entiendo para qué lo usarías, tampoco. Devuelve un 'IEnumerable', por lo que si usó '.DefaultIfEmpty(). First()' es lo mismo que '.FirstOrDefault()' ... [Los ejemplos en MSDN] (http://msdn.microsoft. com/en-us/library/bb360179.aspx) son realmente malas. –
Ryan
Un uso es para que no tenga que dividir el código con las pruebas 'if (x! = Null)'. – ChrisF