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;
}
ProductId
ist der Primärschlüssel der Tabelle.
Für eine schlechte Entwurfsentscheidung des DB-Designers (ich kann sie nicht ändern) habe ich CategoryId
und CategoryName
in dieser Tabelle.
Ich benötige eine DropDownList mit (eindeutig) CategoryId
als Wert und CategoryName
als Text . Deshalb habe ich folgenden Code angewendet:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
logischerweise sollte ein anonymes Objekt mit CategoryId
und CategoryName
als 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 product
ist:
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})