0

C# コードで条件付きの左結合を作成しようとしています。SQL Server で記述できますが、ラムダ式として記述するのに問題があります。ここに私のSQLコードの大まかな部分があります:

Select x.RequestId, aud.DepartmentId
From Requests x
Left Join UserDepartment ud on x.AssignedToTeam = ud.DepartmentId and ud.User = 'Joe'

Left Join の書き方は知っていますが、条件を追加する方法や可能かどうかについてはよくわかりません。

4

3 に答える 3

3

次のようなものが必要だと思います

var query = from request in db.Requests
            join department in db.UserDepartments
                                 .Where(dep => dep.User == "Joe")
              on request.AssignedToTeam equals department.DepartmentId
              into departments
            from dep in departments.DefaultIfEmpty()
            select new { request.RequestId,
                         DepartmentId = dep == null ? null : (int?) dep.DepartmentId
            };

(もちろん、必要に応じて、部門 ID がない場合の処理​​方法を変更してください。)

于 2012-10-10T19:03:17.093 に答える
0
var request = db.View.Join(
    db.UserDepartment.Where(w=>w.User=="Joe"),
    a=>a.AssignedToTeam, 
    b=>b.DepartmentId, 
    (a,b)=> new {View = a, UserDepartment = b});
于 2012-10-10T23:47:17.550 に答える
0

MSDN の記事を参照してください:方法: 左外部結合を実行する (C# プログラミング ガイド)

于 2012-10-10T19:01:36.310 に答える