Ich habe die folgende EF-Klasse aus einer Datenbank abgeleitet (vereinfacht)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductIdist der Primärschlüssel der Tabelle.
Für eine schlechte Entwurfsentscheidung des DB-Designers (ich kann sie nicht ändern) habe ich CategoryIdund CategoryNamein dieser Tabelle.
Ich benötige eine DropDownList mit (eindeutig) CategoryIdals Wert und CategoryNameals Text . Deshalb habe ich folgenden Code angewendet:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
logischerweise sollte ein anonymes Objekt mit CategoryIdund CategoryNameals Eigenschaften erstellt werden. Das Distinct()garantiert, dass es keine doppelten Paare gibt ( CategoryId, CategoryName).
Aber eigentlich funktioniert es nicht. Soweit ich verstanden habe, Distinct()funktionieren die Werke nur, wenn es nur ein Feld in der Sammlung gibt, sonst werden sie einfach ignoriert ... ist es richtig? Gibt es eine Problemumgehung? Vielen Dank!
AKTUALISIEREN
Entschuldigung productist:
List<Product> product = new List<Product>();
Ich habe einen alternativen Weg gefunden, um das gleiche Ergebnis zu erzielen wie Distinct():
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})