0

在域服务类中,我想在连接查询中使用两个实体:WorkerOnMachine {id(int), WorkerId(int), MachineId(int)} 和 Worker(WorkerId(int), Name(string).. .)

我想在域服务类中创建一个方法,该方法通过以下方式返回在选定机器上运行的所有工作人员(工作人员-机器关系存储在 WorkerOnMachineTable 中):

public IQueryable<Worker> GetWorkerByMachineId(int machineId)
        {
            var joinedTable = from wom in this.ObjectContext.WorkerOnMachine
                              join w in this.ObjectContext.Worker on wom.WorkerId equals w.Id
                              where wom.MachineId == machineId
                              select new { w };
            return joinedTable as IQueryable<Worker>;
        }

但该方法返回一个空列表。有谁知道在域服务类中编写上述方法的正确方法是什么?

谢谢!

4

1 回答 1

1

不要使用 var,它会让你感到困惑。

如所写,joinedTables 是IQueryable<AnonType>. 由于它不是IQueryable<Worker>强制转换,因此as返回 null。

相反,写:

IQueryable<Worker> joinedTable = ...

然后修复:

select w;

最后:

return joinedTable;

(顺便说一句,那个连接看起来不错)。

于 2011-06-29T17:02:28.570 回答