2011-11-11 1 views
0

私は複数の条件を持つ結合句を持っています.1つは静的な値ですが、コンパイル時に "Invalid anonymous type member declerator"静的な値を持つフィールドを結合するときに無効な匿名型メンバーdeclerator

明確にするために
join t7 in db.Notes.DefaultIfEmpty() on new { t2.Lead_ID } equals new { t7.Item_ID, 5 = t7.Type_ID } into notes 

、私が参加しています:

  • t2.Lead_ID
  • t7.Type_ID

でした誰でもポイント5まで(または変数)t7.Item_IDに私は正しい方向に?

+2

なぜt7.Type_IDにリテラル値5を割り当てようとしていますか?それ自体はコンパイラエラーです。 –

答えて

1

これは間違っています。あなたからのコードでは、片側に1つの小道具を持ち、もう片方に2小道具を持つオブジェクトに参加しようとします(そして、5 = t7.Item_ID)はエラーそのものです。 あなたはこのようにそれを書いて試してみてください:

join t7 in db.Notes.DefaultIfEmpty() on t2.Lead_ID equals t7.Item_ID into notes 
where t7.Item_ID == 5 

これは、あなたが望む結果を与える必要があります。

0

equalsの両側に同じ数のパラメータを設定する必要があります。同じ名前である必要があります。

join t7 in db.Notes.DefaultIfEmpty() 
    on new { Item_ID = t2.Lead_ID, Type_ID = 5 } equals new { t7.Item_ID, t7.Type_ID } 
    into notes 

ソースシーケンス内のプロパティは、同じ名前を持っていない場合は、キーの新しい名前を割り当てる必要がありますHow to: Join by Using Composite Keys (C# Programming Guide)

を参照してください。

関連する問題