LinQ错误linq联合类型推断未能调用'join'错误

时间:2013-04-18 05:40:38

标签: c# linq entity-framework

我对实体框架很新,我试图在两个实体上使用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  '

目前这两个表没有任何数据。如果有人能帮助我解决这种情况,我会很高兴

2 个答案:

答案 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而不是==这个词