SQLで簡単にできる比較的単純なものはあるのですが、ラムダ式を使いこなそうとしていて、苦労しています。
簡単な例を次に示します。基本的に私は2つのテーブルを持っています。
- tblAction (アクション ID、アクション名)
- tblAudit (AuditID、ActionID、削除済み)
tblAudit には、Deleted フラグが 1 に設定された tblAction に関するエントリがある場合があります。
私がしたいのは、tblAudit に削除されたエントリがないアクションを選択することだけです。したがって、SQL ステートメントは次のようになります。
Select tblAction.*
From tblAction LEFT JOIN tblAudit on tblAction.ActionID=tblAudit.ActionID
where tblAudit.Deleted <> 1
VB.Net の LINQ で上記に相当するものは何ですか? 私は試した:
Context.Actions.Where(Function(act) Context.Audit
.Where(Function(aud) aud.Deleted=False AndAlso aud.ActionID=act.ActionID)).ToList
しかし、これは実際には、tblAction の各エントリが tblAudit にもエントリを持つ必要がある内部結合タイプのシナリオです。データベース マッピングを行うために Entity Framework Code First を使用しています。これを行うことができる方法でマッピングを定義する方法はありますか?