J'ai les éléments suivants Classe EF dérivé d'une base de données (simplifié)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
est le Clé primaire de la table.
Pour une mauvaise décision de conception prise par le concepteur de la BD (je ne peux pas la modifier), j'ai CategoryId
y CategoryName
dans ce tableau.
J'ai besoin d'un Liste DropDownList avec (distinct) CategoryId
como Valeur y CategoryName
como Texte . J'ai donc appliqué le code suivant :
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
ce qui logiquement devrait créer un objet anonyme avec CategoryId
y CategoryName
en tant que propriétés. Le site Distinct()
garantit qu'il n'y a pas de paire de doublons ( CategoryId
, CategoryName
).
Mais en fait, cela ne fonctionne pas. D'après ce que j'ai compris, le Distinct()
ne fonctionne que lorsqu'il n'y a qu'un seul champ dans la collection, sinon il les ignore... Est-ce correct ? Existe-t-il une solution de contournement ? Merci !
UPDATE
Désolé product
est :
List<Product> product = new List<Product>();
J'ai trouvé une autre façon d'obtenir le même résultat. Distinct()
:
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})