Как использовать LINQ Distinct () с несколькими полями
У меня есть следующееEF class выведено из базы данных (упрощенно)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
этоPrimary Key стола.
За плохое дизайнерское решение, принятое дизайнером БД (я не могу его изменить), у меня естьCategoryId
а такжеCategoryName
в этой таблице.
мне нужноDropDownList с (отличным)CategoryId
какValue а такжеCategoryName
какText, Поэтому я применил следующий код:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
который логически должен создать анонимный объект сCategoryId
а такжеCategoryName
как свойства.Distinct()
гарантирует, что нет дубликатов пары (CategoryId
, CategoryName
).
Но на самом деле это не работает. Насколько я понялDistinct()
работает только тогда, когда в коллекции есть только одно поле, иначе оно просто игнорирует их ... это правильно? Есть ли обходной путь? Спасибо!
UPDATE
сожалеюproduct
является:
List<Product> product = new List<Product>();
Я нашел альтернативный способ получить тот же результат, что иDistinct()
:
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})