私はデータベースから派生した次のEFクラスを持っています(簡略化)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductIdテーブルの主キーです。
DBデザイナによって行われた悪い設計決定(私はそれを変更することはできません)のために、私はこの表にCategoryIdあります。CategoryName
(distinct)をValueおよびTextとして持つDropDownListが必要です。したがって、次のコードを適用しました。CategoryIdCategoryName
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
CategoryId論理的には、プロパティとしておよびを使用して匿名オブジェクトを作成する必要がありCategoryNameます。重複ペア( 、 )Distinct()がないことを保証します。 CategoryIdCategoryName
しかし、実際には機能しません。コレクションにフィールドが1つしかない場合の作品を理解している限り、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})