ho bisogno di tradurre questo SQL
dichiarazione a una query Linq-Entity
...SQL per Entity Framework conte Group-By
SELECT name, count(name) FROM people
GROUP by name
ho bisogno di tradurre questo SQL
dichiarazione a una query Linq-Entity
...SQL per Entity Framework conte Group-By
SELECT name, count(name) FROM people
GROUP by name
sintassi di query
var query = from p in context.People
group p by p.name into g
select new
{
name = g.Key,
count = g.Count()
};
sintassi Metodo
var query = context.People
.GroupBy(p => p.name)
.Select(g => new { name = g.Key, count = g.Count() });
Un'estensione utile consiste nel raccogliere i risultati in un Dictionary
per la ricerca rapida (ad es. in un ciclo):
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);
Originariamente trovato qui: http://www.snippetsource.net/Snippet/140/groupby-and-count-with-ef-in-c
IMPORTANTE: Entity Framework 7 (ora rinominato in Entity Framework Core 1.0/2.0) non supporta ancora GroupBy()
per la traduzione di GROUP BY
in SQL generato (anche nella versione 1.0 finale non lo farà). Qualsiasi logica di raggruppamento verrà eseguita sul lato client, il che potrebbe causare il caricamento di molti dati.
Alla fine codice scritto come questo avrà automagicamente iniziare a utilizzare GROUP BY, ma per il momento è necessario essere molto cauti se il caricamento di tutto il tuo set di dati non-raggruppati in memoria causerà problemi di prestazioni.
Per gli scenari in cui questo è un rompicapo dovrai scrivere l'SQL a mano ed eseguirlo tramite EF.
In caso di dubbi, avviare Sql Profiler e vedere cosa viene generato, cosa che probabilmente si dovrebbe fare comunque.
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2
Grazie per il testa a testa –
anche senza raggruppamento in 1.1 –
o 1.2 o 2.0. Mi arrendo –