Entity Framework 5 を使用して、次の LINQ クエリを実行しようとしています。
int taskId = 2;
query = from a in Table_A
where a.StatusCode != "DONE"
&& a.Inbound
join b in Table_B
on a.Id equals b.Id_Table_A
join c in Table_C
on a.State equals (c.State ?? a.State)
where 2 == c.Id_Task
&& b.DataType == c.DataType
select a.Id;
問題を引き起こしている行は次のとおりです。
on a.State equals (c.State ?? a.State)
Table_C の「状態」フィールドは null 可能です...そして null の場合、「すべての状態」を意味するために使用されます。そのため、「c.State」が null の場合、レコードを一致させたいと考えています。これを SQL で書くとしたら、次のようにします。
JOIN Table_C ON Table_A.State = ISNULL(Table_C.State, Table_A.State)
残念ながら、次のエラーが表示されます。
名前 'a' は 'equals' の右側のスコープにありません。「等しい」の両側の式を交換することを検討してください。
これを機能させる秘訣を教えてくれる人に感謝します。
ありがとう。