0

我有两张桌子:TblAppointmentTypesTblEmployeeInfo。这两个表之间存在多对多关系,连接表是TblEmployeeServices. 中有 2 条记录, 中有TblAppointmentTypes4 条记录TblEmployeeInfo。的所有两条记录TblAppointmentTypes都分配给 中的所有记录TblEmployeeInfo,即 中有 8 条记录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;
 }
4

1 回答 1

0

正如我所知道的,您想要获取与所有员工相关的所有 AppointmentTypes。这意味着应排除与 3 个员工(在您的情况下)相关的 AppType。所以,我尝试过的最有效的代码是这样的:

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();
于 2013-04-29T07:48:43.037 回答