J'ai une requête LINQ qui va trier les listes des employés de l'entreprise et des participants aux réunions d'entreprise. Je veux extraire les employés qui sont pas participants aux réunions. Ainsi, une jointure externe gauche semble être la meilleure stratégie LINQ. Lorsque j'ai débogué et franchi le code, employeesNotInMeetings
a renvoyé tous les employés, ne parvenant pas à supprimer les employés qui rencontraient les participants. Pourquoi cette jointure externe gauche ne parvient-elle pas à supprimer les entrées de liste appropriées?Left Outer Join LINQ
//Query for all attendees who are employees
List<Attendee> employeesWhoAreAttendees = db.Attendees.Select(ea => ea).ToList();
//Query for all employees in database
List<Employee> employees = db.Employees.Select(ee => ee).ToList();
var employeesNotInMeetings = from emp in employees
join att in employeesWhoAreAttendees
on emp.EmployeeID equals att.EmployeeID into gj
from gji in gj.DefaultIfEmpty()
//If EmployeeID < 0, the attendee is not an employee
where emp.EmployeeID > 0
select emp;
Ne devrait pas être où 'gji == null' ? Aussi, sauf si vous avez besoin de ces listes ailleurs, il serait préférable de faire cela comme une requête à la base de données. – juharr