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,

War es hilfreich?

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 ();.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top