Ich habe die folgende Abfrage in SQL, die ich in LINQ-Anweisung konvertieren möchte.Gruppe von LINQ vs Gruppe von SQL
select AreaId, BrandId, MilestoneId, DocumentCategoryId
from Document
group by AreaId, Brandid, MilestoneId, DocumentCategoryId
Ich habe versucht, zum Beispiel
var docs =
from d in documents
group d by new
{
d.Area,
d.Brand,
d.MilestoneId,
d.DocumentCategoryId
} into gcs
select new Group()
{
Area = gcs.Key.Area,
Brand = gcs.Key.Brand,
MilestoneId = gcs.Key.MilestoneId,
DocumentCategoryId = gcs.Key.DocumentCategoryId,
};
Und
var docs = documents
.GroupBy(d => new Group
{
Area = d.Area,
Brand = d.Brand,
MilestoneId = d.MilestoneId,
DocumentCategoryId = d.DocumentCategoryId,
})
aber das Ergebnis in SQL gibt 88 Zeilen (Ziel), in Abfragesyntax 78 Zeilen und in LINQ 270 (Gesamtzahl).
Ich möchte eine LINQ-Anweisung für 88 Zeilen zurückgeben.
Warum verwenden Sie eine Gruppe? wenn Sie nur an dem ** Schlüssel ** interessiert sind und nicht an den Aggregateinträgen, die zu dem Schlüssel gehören? Gibt es einen Grund, warum du 'Distinct' nicht im Gegensatz zu' GroupBy' verwendest? (sowohl in SQL als auch in Code) – Flater
sind die Daten in einer Datenbank? Wenn ja, was ist falsch mit der Verwendung von sql und Offloading der Fetch auf den Db-Server? Es ist eine sehr schlechte Idee, wenn Sie alle Daten in den Speicher laden möchten, nur weil Sie linq verwenden möchten. – Rob
@Rob angenommen, dass 'Dokumente' ist eine' Tabelle '/' DbSet 'oder ähnlich: es lädt nicht" alle Daten "- es lädt alle einzigartigen Kombinationen - obwohl ich Flater zustimmen, dass, wenn es nicht ' t ein Aggregat, würde Distinct "offensichtlicher" sein –