Digamos que tengo este SQL:LINQ - combinación izquierda, Grupo A, y el conde
SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId
¿Cómo puedo traducir esto en LINQ to SQL? Me quedé atrapado en el COUNT (c.ChildId), el SQL generado siempre parece dar como resultado COUNT (*). Esto es lo que obtuve hasta ahora:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by p.ParentId into grouped
select new { ParentId = grouped.Key, Count = grouped.Count() }
¡Gracias!
OK, eso funciona, pero ¿por qué? ¿Cómo piensas a través de eso? ¿Cómo el conteo de valores nulos nos da lo mismo que COUNT (c.ChildId)? Gracias. – pbz
Así es como funciona SQL. COUNT (fieldname) contará las filas en ese campo que no son nulas. Tal vez no entiendo tu pregunta, aclara si ese es el caso. –
Supongo que siempre pensé en ello en términos de recuento de filas, pero está en lo cierto, solo se cuentan los valores no nulos. Gracias. – pbz