Hoy me encontré con un problema con LINQ para objetos (no SQL) que aparecieron debido a un error tipográfico. Tenía un lugar .Select
y un .Where
en otro lugar. Esperaba el mismo resultado, pero muestran números diferentes. Asumir somelist
tiene 10 elementos con todos los elementos que tienen qty
= 0
linq ambigüedad en donde y seleccione
//returns 10 - basically count of all rows. I am expecting 0
somelist.Select(p => p.qty > 0).Count()
//returns 0 - the correct count
somelist.Where(p => p.qty > 0).Count()
si ambos seleccionan y donde volver IEnumerable<T>
entonces ¿por qué la ambigüedad? Gracias.
thx everyone para esa actualización de linq 101. – Gullu
Es uno de esos problemas de nombres interesantes, C# trata de ser sintácticamente como sql (que sql sugiere seleccionar columnas), pero el nombre 'Seleccionar', especialmente si ingresas un predicado, puede leer como tú para seleccionar solo dicho los artículos que pasan, de hecho en ruby y smalltalk eso es lo que hace el método 'select '. – jbtule