Verwendung von LINQ Distinct () mit mehreren Feldern
Ich habe folgendesEF-Klasse aus einer Datenbank abgeleitet (vereinfacht)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
ist derPrimärschlüssel des Tisches.
Für eine schlechte Designentscheidung durch den DB-Designer (ich kann sie nicht ändern) habe ichCategoryId
undCategoryName
in dieser Tabelle.
ich brauche einDropdown-Liste mit (deutlich)CategoryId
wieWert undCategoryName
wieText. Deshalb habe ich folgenden Code angewendet:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
mit welcher logik es ein anonymes objekt erstellen sollCategoryId
undCategoryName
als Eigenschaften. DasDistinct()
garantiert, dass es kein Duplikatpaar gibt (CategoryId
, CategoryName
).
Aber eigentlich klappt es nicht. Soweit ich das verstanden habeDistinct()
Funktioniert nur, wenn es nur ein Feld in der Sammlung gibt. Andernfalls werden sie einfach ignoriert. Stimmt das? Gibt es eine Problemumgehung? Vielen Dank!
AKTUALISIEREN
Es tut uns leidproduct
ist:
List<Product> product = new List<Product>();
Ich habe einen alternativen Weg gefunden, um das gleiche Ergebnis zu erzielen wieDistinct()
:
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})