У мене є такий клас EF, похідний з бази даних (спрощений)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
є первинним ключем таблиці.
За неправильне дизайнерське рішення, прийняте дизайнером БД (я не можу його змінити), я маю CategoryId
та CategoryName
в цій таблиці.
Мені потрібен DropDownList з (різними) CategoryId
як значення та CategoryName
як текст . Тому я застосував такий код:
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})