Невозможно удалить запись в выражении ссылки

У меня есть две таблицы: TblAppointmentTypes а также TblEmployeeInfo, Между этими двумя таблицами существует взаимосвязь между многими со объединенной таблицей, которая TblEmployeeServices, Есть две записи в TblAppointmentTypes и четыре записи в TblEmployeeInfo, Все две записи TblAppointmentTypes присваивается всем записям в TblEmployeeInfo, что есть восемь записей в TblEmployeeServices, Я хочу получить все услуги, которые назначены для всех четырех Employees, он должен вернуть 2, который назначен всем четырем сотрудникам, но мой запрос вернет 8 записей, четыре дублирующих службы.

Я использую Telerik Open Access ORM. Вот код:

public static List<TblAppointmentType> GetAllAppointmentType(List<int> employeeIDs)
{
    var list = new List<TblAppointmentType>();
    if (employeeIDs != null && employeeIDs.Count > 0)
    {
        var dc = new Entities();
        list = (from a in dc.TblAppointmentTypes.Distinct()
               join e in dc.TblEmployeeServices on a.ID equals e.AppointmentTypeID
               where a.IsDeleted == false && employeeIDs.Contains<int>(e.EmployeeID)
               select a).ToList();
     }
     return list;
 }

1 ответ

Как я понял, вы хотите получить все типы AppointmentTypes, которые относятся ко всем сотрудникам. Это означает, что AppTypes, относящиеся к 3 сотрудникам (в вашем случае), должны быть исключены. Итак, самый эффективный код, который я пробовал, выглядит так:

list = (from a in dc.TblAppointmentTypes
               join e in dc.TblEmployeeServices on a.ID equals e.AppointmentTypeID
               where a.IsDeleted == false 
               group e.EmployeeID by a into g
               where g.count() == employeeIDs.Count()
               select g.Key).ToList();
Другие вопросы по тегам