2017-02-20 5 views
0

私はマスターとディテールとして2つのテーブルを持っています。私はいくつかの属性のように設定します。 [DisplayName="Customer Name"]と.....私が選択したリストで自分のDataGridViewのソースまたはレポートサービスソースまたは...を埋めるとき、私は属性を使用することができますし、それは私のヘッダ列を設定し し、多くの役に立ったしかし、私は私のマスター・ディテールFlattをしたいと似選択LINQ書いた場合:データアノテーションはLinqの選択で失われました

var x = from m in master 
    join d in detail on m.id equal d.masterId 
    select new {d.Id , d.Name , m.Date, m.Customer} 

私は定義された属性にアクセス全くありません。 どうすればいいですか? 私はあなたが新しいモーダル/クラスのようにその上の属性を表示し、適用するために、あなたのページにしたいすべてのプロパティを保持しますのMas​​terDetailsを作成する必要があり、このため

答えて

0

を選択するごとにViewClassを書く好きではありません新しいMasterDetailsクラスを作成し、次に新しいlinqを作成します。

var x = from m in master 
    join d in detail on m.id equal d.masterId 
    select new MasterDetails {Id=d.Id ,Name= d.Name ,Date= m.Date,Customer= m.Customer} 

うまくいくと思います。

+0

私が望むビューごとに** ViewClass **を書く必要がありました(または、それぞれの選択に参加しました...私のデータが2つ以上のテーブルに入っていて、それらに参加したと思います)。なぜ属性は処分されるのでしょうか? –

+0

属性は削除されていませんが、そのクラスオブジェクトにのみ関連付けられていますので、 'select new {d.Id、d.Name、m.Date、m.Customer}'の型はどう思いますか?これは匿名型です。 – Viplock

+1

はい、あなたのビューにデータ型のものを混在させ、属性を使用する場合は、新しいクラス(ViewClass)を作成する必要があります。 – Viplock

関連する問題