LINQ to DataSet, verschieden von mehreren Spalten
-
22-08-2019 - |
Frage
Ich wollte nur prüfen, ob Art und Weise ist durch mehrere Spalten verschieden zu tun. Vielen Dank im Voraus !!!
BTW, fand ich eine große LINQ-Erweiterung hier aber einige Hinweise müssen sie für mehrere Spalten verwenden,
Lösung
Nun können Sie die Projektion zuerst tun:
var qry = db.Customers.Select(cust => new {cust.ID, cust.Name, cust.Region})
.Distinct();
oder in Abfragesyntax:
var qry = (from cust in db.Customers
select new {cust.ID, cust.Name, cust.Region}).Distinct();
Das tun?
Andere Tipps
Statt Distinct können Sie GROUPBY verwenden und dann die oberste Datensatz jeder Gruppe auswählen
Wie durch mehrere Felder ohne anonyme Distinct LINQ Typen
Rückkehr von o in objEntity
group o by new { o.Field1, o.Field2, o.Field3, o.Field4, o.Field5 } into grp select grp.FirstOrDefault();
Dies gibt Ihnen die EntityObject Anstatt die AnonymousType
Mit dem „distinct nach mehreren Spalten“, was Sie wirklich meinen, ist eine Gruppe von.
Wenn Sie für verschiedene fragen, bedeutet dies, dass Sie alle unterschiedlichen Zeilen bekommen, oder eine Gruppe, die durch alle Spalten in der Tabelle.
Wenn Sie nur wollen unterschiedliche Gruppierungen für eine Teilmenge der Spalten bekommen, dann eine Gruppe verwenden, indem Sie in Ihrer Klausel, durch die Spalten Gruppe angeben. Dann werden die Gruppen auswählen, wie Sie für jede Gruppe einen Satz Schlüssel wollen.
Eine weitere einfache Möglichkeit ist, eine einzige eindeutige Zeichenfolge zu erstellen.
var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);
var query = (von Zyste in db.Customers neue Option {cust.ID, cust.Name, cust.Region}). GroupBy (x => new {x.Name, x.Region}). Wählen (z => z.OrderBy (i => i.cust) .FirstOrDefault ()) ToList ();.