У меня есть следующий класс EF , полученный из базы данных (упрощенный)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
— это первичный ключ таблицы.
Из-за плохого проектного решения, принятого разработчиком БД (я не могу его изменить), у меня есть CategoryId
и CategoryName
в этой таблице.
Мне нужен DropDownListс (различным) CategoryId
как Valueи CategoryName
как Text. Поэтому я применил следующий код:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
, что логически должно создать анонимный объект со свойствами CategoryId
и CategoryName
. Distinct()
гарантирует отсутствие пары дубликатов ( CategoryId
, CategoryName
).
Но на самом деле это не работает. Насколько я понял, Distinct()
работает только тогда, когда в коллекции есть только одно поле, иначе он просто их игнорирует... правильно ли это? Есть ли обходной путь? Спасибо!
ОБНОВЛЕНИЕ
Извините 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})