Volevo solo verificare se c'è modo di fare distinto da più colonne. Grazie in anticipo!!!LINQ to DataSet, distinto da più colonne
A proposito, ho trovato una grande estensione LINQ here ma hanno bisogno di una guida per utilizzarlo per più colonne
Volevo solo verificare se c'è modo di fare distinto da più colonne. Grazie in anticipo!!!LINQ to DataSet, distinto da più colonne
A proposito, ho trovato una grande estensione LINQ here ma hanno bisogno di una guida per utilizzarlo per più colonne
Beh, si può fare la proiezione prima:
var qry = db.Customers.Select(cust => new {cust.ID, cust.Name, cust.Region})
.Distinct();
O in sintassi di query:
var qry = (from cust in db.Customers
select new {cust.ID, cust.Name, cust.Region}).Distinct();
Che fare?
Per "distinta base a più colonne" che cosa realmente significa è un gruppo da.
Quando chiedi distinti, significa che stai ricevendo TUTTE le righe distinte, oppure, un gruppo utilizzando tutte le colonne nella tabella.
Se si desidera ottenere solo raggruppamenti distinti per un sottoinsieme delle colonne, quindi utilizzare un gruppo per nella clausola, specificando le colonne per raggruppare per. Quindi, seleziona i gruppi, poiché desideri un solo set di chiavi per ogni gruppo.
Invece di Distinto è possibile utilizzare Groupby e quindi selezionando il record I più di ogni gruppo
How to LINQ Distinct by Multiple Fields without anonymous types
ritorno da o in objEntity
group o by new { o.Field1, o.Field2, o.Field3, o.Field4, o.Field5 } into grp select grp.FirstOrDefault();
Questo ti darà il EntityObject Piuttosto che il AnonymousType
var qry = (dalla Cust in db.Customers selezionare nuova {cust.ID, cust.Name, cust.Region}). GroupBy (x => new {x. Nome, x.Regione}). Selezionare (z => z.OrderBy (i => i.cust) .FirstOrDefault()). ToList();
Un'altra opzione facile è creare una singola stringa distinta.
var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);