2013-04-29 18 views
0

我有两个表:TblAppointmentTypesTblEmployeeInfo。这两个表格之间存在多对多关系,其中一个连接表为TblEmployeeServicesTblAppointmentTypes有两条记录,TblEmployeeInfo有四条记录。 TblAppointmentTypes的所有两条记录都分配给TblEmployeeInfo中的所有记录,即TblEmployeeServices中有8条记录。我想检索分配给所有四个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; 
} 

回答

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(); 
+0

对不起已故的答复,但是这个代码不工作对我来说,它抛出此异常: 的执行过程中出现的异常“ Extent ()。Join(Extent (),a => a.ID,e => e.AppointmentTypeID,(a,e)=> new <> f__AnonymousType8'2(a = a,e = e))。其中(<> h__TransparentIdentifier2e =>(<> h__TransparentIdentifier2e.a.IsDeleted == False))。GroupBy – 2013-05-07 10:10:15