我对实体框架很新,我试图在两个实体上使用join子句,如下所示。
var alertlist = from elogAlert in yangkeeDBEntity.Yang_Kee_Logistics_Pte_Ltd_ELog_Tablet_Alert
where elogAlert.No_ != null
join elogAlertDetail in yangkeeDBEntity. Yang_Kee_Logistics_Pte_Ltd_ELog_Tablet_Alert_Details
on elogAlert.No_ == elogAlertDetail.AlertID
where elogalertdetail.employee_id == driverid
select new
{
elogalertdetail.employee_id,
elogalertdetail.alert_id,
elogalertdetail.no_,
elogalertdetail.status,
elogalertdetail.created_by,
elogalertdetail.date_created,
};
嗨,从上面的代码我得到两个错误说
'Error 1 The name 'elogAlertDetail' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.' and 'linq joint type inference failed to call 'join' error '
目前这两个表没有任何数据。如果有人能帮助我解决这种情况,我会很高兴
答案 0 :(得分:4)
您在加入Linq时无法使用==
。您需要使用equals
。
请注意,它不是method .Equals(..)
,而是keyword
from elogAlert in yangkeeDBEntity.Yang_Kee_Logistics_Pte_Ltd_ELog_Tablet_Alert
join elogAlertDetail in yangkeeDBEntity.Yang_Kee_Logistics_Pte_Ltd_ELog_Tablet_Alert_Details
on elogAlert.No_ equals elogAlertDetail.AlertID //this line has equals instead of ==
where elogAlert.No_ != null
where elogalertdetail.employee_id == driverid
select new
{
elogalertdetail.employee_id,
elogalertdetail.alert_id,
elogalertdetail.no_,
elogalertdetail.status,
elogalertdetail.created_by,
elogalertdetail.date_created,
};
查看Linq join
上的documentaion答案 1 :(得分:1)
您所遇到的错误与join上等于操作数的参数顺序有关。
连接表必须是等于的RHS,LHS必须在您加入的行中。
在这种情况下,yangkeeDBEntity
不在elogAlert
行
CF MSDN中的示例
from c in categories
join p in products on c equals p.Category into ps
from p in ps
select new { Category = c, p.ProductName };
c
位于您要加入的行中,p.category
位于您要加入的表格中
此外,您还需要使用上面提到的equals
而不是==
这个词