在域服务类中,我想在连接查询中使用两个实体: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>;
}
但该方法返回一个空列表。有谁知道在域服务类中编写上述方法的正确方法是什么?
谢谢!
答案 0 :(得分:1)
不要使用var,这让你感到困惑。
如上所述,joinedTables是IQueryable<AnonType>
的一个实例。由于它不是IQueryable<Worker>
,as
的强制转换返回null。
相反,写一下:
IQueryable<Worker> joinedTable = ...
然后修复:
select w;
最后:
return joinedTable;
(顺便说一句,那次加入看起来不错)。