Po prostu chciałem sprawdzić, czy jest sposób na odróżnienie od wielu kolumn. Z góry dziękuję!!!LINQ to DataSet, odrębne w wielu kolumnach
BTW, znalazłem wielkie rozszerzenie LINQ here ale potrzebujesz kilku wskazówek, aby używać go do wielu kolumn
Po prostu chciałem sprawdzić, czy jest sposób na odróżnienie od wielu kolumn. Z góry dziękuję!!!LINQ to DataSet, odrębne w wielu kolumnach
BTW, znalazłem wielkie rozszerzenie LINQ here ale potrzebujesz kilku wskazówek, aby używać go do wielu kolumn
Cóż, można zrobić projekcję pierwszy:
var qry = db.Customers.Select(cust => new {cust.ID, cust.Name, cust.Region})
.Distinct();
albo w składni zapytania:
var qry = (from cust in db.Customers
select new {cust.ID, cust.Name, cust.Region}).Distinct();
to zrobić?
Przez „odrębny od wielu kolumnach” co naprawdę oznacza to grupa o.
Gdy poprosisz o wyróżnienie, oznacza to, że otrzymujesz WSZYSTKIE odrębne wiersze lub grupę, używając wszystkich kolumn w tabeli.
Jeśli chcesz otrzymywać tylko wyraźne grupy dla podzbioru kolumn, użyj w klauzuli grupy, określając kolumny do grupowania według. Następnie wybierz grupy, ponieważ potrzebujesz tylko jednego zestawu kluczy dla każdej grupy.
Zamiast Wyraźny można użyć GroupBy a następnie wybierając rekord Top większość z każdej grupy
How to LINQ Distinct by Multiple Fields without anonymous types
powrót z ow objEntity
group o by new { o.Field1, o.Field2, o.Field3, o.Field4, o.Field5 } into grp select grp.FirstOrDefault();
To da ci EntityObject raczej niż AnonymousType
var qry = (z UST w db.Customers wybrać nową {cust.ID, cust.Name, cust.Region}). GroupBy (X => nowy {X. Name, x.Region}). Select (z => z.OrderBy (i => i.cust) .FirstOrDefault()). ToList();
Inną łatwą opcją jest utworzenie pojedynczego wyraźnego ciągu.
var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);