ich diese SQL
Anweisung zu einer Linq-Entity
Abfrage zu übersetzen brauchen ...SQL Entity Framework Count Gruppe-By
SELECT name, count(name) FROM people
GROUP by name
ich diese SQL
Anweisung zu einer Linq-Entity
Abfrage zu übersetzen brauchen ...SQL Entity Framework Count Gruppe-By
SELECT name, count(name) FROM people
GROUP by name
Abfragesyntax
var query = from p in context.People
group p by p.name into g
select new
{
name = g.Key,
count = g.Count()
};
Methode Syntax
var query = context.People
.GroupBy(p => p.name)
.Select(g => new { name = g.Key, count = g.Count() });
Eine nützliche Erweiterung besteht darin, die Ergebnisse in einer Dictionary
für eine schnelle Suche (z.B. in einer Schleife):
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);
Ursprünglich hier: http://www.snippetsource.net/Snippet/140/groupby-and-count-with-ef-in-c
WICHTIG: Entity Framework 7 (jetzt umbenannt in Entity Framework Core-1.0/2.0) noch GroupBy()
nicht unterstützt für Übersetzung GROUP BY
in generiertem SQL (selbst in der endgültigen Version 1.0 wird es nicht). Jede Gruppierungslogik wird auf der Clientseite ausgeführt, was dazu führen kann, dass viele Daten geladen werden.
Irgendwann wird so geschriebener Code AUTOMATISCH mit GROUP BY beginnen, aber jetzt müssen Sie sehr vorsichtig sein, wenn das Laden Ihres gesamten nicht gruppierten Datensatzes in den Speicher Leistungsprobleme verursacht.
Für Szenarien, in denen dies ein Deal-Breaker ist, müssen Sie das SQL manuell schreiben und es über EF ausführen.
Im Zweifelsfall Sql Profiler hochfeuern und sehen, was generiert wird - was Sie wahrscheinlich sowieso tun sollten.
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2
Danke für die oben –
auch keine Gruppierung in 1.1 –
oder 1.2 oder 2.0 Köpfe. Ich gebe –