2012-10-10 3 views
0

J'essaye de créer une jointure gauche avec une condition dans mon code C#. Je peux l'écrire dans SQL Server, mais j'ai de la difficulté à l'écrire en tant qu'expression lambda. Voici une partie rugueuse de mon code SQL:Left Joindre en utilisant Linq avec condition

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

Je sais comment écrire la gauche, mais je suis Rejoignez pas familier avec ou s'il est possible d'ajouter la condition.

+1

Qu'est-ce que 'aud'? Vous avez déclaré 'ud' - should * that * être' aud'? –

+1

Vous pourriez vouloir passer et accepter quelques réponses, aussi –

Répondre

3

Je suspect vous voulez quelque chose comme ceci: (. Évidemment changer la façon dont vous voulez gérer l'absence d'un numéro de service si nécessaire)

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 
      }; 

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});