Necesito traducir esta declaración SQL
a una consulta Linq-Entity
...SQL para Entity Framework Count Grupo-Por
SELECT name, count(name) FROM people
GROUP by name
Necesito traducir esta declaración SQL
a una consulta Linq-Entity
...SQL para Entity Framework Count Grupo-Por
SELECT name, count(name) FROM people
GROUP by name
sintaxis de consulta
var query = from p in context.People
group p by p.name into g
select new
{
name = g.Key,
count = g.Count()
};
sintaxis Método
var query = context.People
.GroupBy(p => p.name)
.Select(g => new { name = g.Key, count = g.Count() });
Una extensión útil es recopilar los resultados en un Dictionary
para una búsqueda rápida (p. en un bucle):
var resultDict = _dbContext.Projects
.Where(p => p.Status == ProjectStatus.Active)
.GroupBy(f => f.Country)
.Select(g => new { country = g.Key, count = g.Count() })
.ToDictionary(k => k.country, i => i.count);
Originalmente se encuentra aquí: http://www.snippetsource.net/Snippet/140/groupby-and-count-with-ef-in-c
IMPORTANTE: Entity Framework 7 (ahora renombrado a Entity Framework Core 1.0/2.0) aun no soporta GroupBy()
para la traducción a GROUP BY
en SQL generado (incluso en la versión final 1.0 no lo hará). Cualquier lógica de agrupación se ejecutará en el lado del cliente, lo que podría provocar que se carguen muchos datos.
Eventualmente, un código escrito de esta manera automáticamente iniciará el uso de GROUP BY, pero por ahora debe tener mucho cuidado si cargar todo su conjunto de datos sin agrupar en la memoria causará problemas de rendimiento.
Para escenarios en los que esto es un factor decisivo, deberá escribir el SQL manualmente y ejecutarlo a través de EF.
En caso de duda, inicie Sql Profiler y vea qué se genera, lo que probablemente debería hacer de todos modos.
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2
Gracias por las cabezas hasta –
También ninguna agrupación en 1,1 –
o 1,2 o 2,0. Renuncio a –