У меня есть запрос LINQ, который будет сортировать списки сотрудников компании и участников на собраниях компаний. Я хочу привлечь сотрудников, которые не Участники на собраниях. Таким образом, левое внешнее соединение, по-видимому, является лучшей стратегией LINQ. Когда я отлаживал и прошел через код, employeesNotInMeetings
вернул всех сотрудников, не удалив сотрудников, которые встречались с участниками. Почему это нарушающее соединение не удаляет правильные записи списка?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;
Не должно быть вашего места 'gji == null' ? Кроме того, если вам не нужны эти списки в другом месте, было бы лучше сделать это как один запрос к БД. – juharr