Bonjour à tous,
J'ai besoin de réaliser avec LINQ l'équivalent d'une requête SQL avec une clause NOT IN.
Voici la requête SQL en question :
Cette requête SQL fonctionne parfaitement. A titre informatif, il y a donc une table Employe, une table EmpServ et une table Service. La table EmpServ contient l'id de l'employe, l'id du serv, une date d'entrée et une date de sortie (on a donc un histoire des changements de service).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT EMP.ID_EMP FROM DBO.EMPLOYE EMP WHERE EMP.DES_EMP = 'DUPONT' AND EMP.PRENOM_EMP = 'ROBERT' AND EMP.ID_EMP NOT IN ( SELECT ES.IDEMP_ES FROM DBO.EMPSERV ES WHERE ES.IDEMP_ES = EMP.ID_EMP AND ES.DSORT_ES IS NULL )
Le but est de faire une recherche afin de savoir si une personne dont on connait le nom et le prenom (sans être sur qu'elle existe déjà dans la table employe) est actuellement dans un service.
J'ai donc essayé de faire l'équivalent en LINQ :
Mais j'ai une erreur à chaque fois. Et je comprend pas trop pourquoi. Pour faire ma requete, je me suis inspiré de cet exemple : http://programminglinq.com/blogs/mar...nq-to-sql.aspx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 MesEntities entities = new MesEntities(); var result = from emp in entities.employe where !(from es in entities.empserv where es.DSort_ES == null select es.employe.ID_Emp) .Contains(emp.ID_Emp) && emp.Des_Emp.Trim().Equals(leNom.Trim()) && emp.Prenom_Emp.Trim().Equals(lePrenom.Trim()) select emp;
J'ai aussi essayé de faire comme ceci mais j'ai aussi une erreur :
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var esResult = from es in entities.empserv where es.DSort_ES == null select es.employee.ID_Emp; var empResult = entities.employe.Where(emp => esResult.Contains(emp.ID_Emp));
Partager