1

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

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

4

2 回答 2

4

==加入 Linq 时不能使用。你需要使用equals.

注意不是方法 .Equals(..)而是关键字

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 加入的文档

于 2013-04-18T05:43:58.083 回答
1

您遇到的错误与连接时等于操作数周围的参数顺序有关。

连接的表必须是等号的 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没有==提到的词

于 2013-04-18T05:49:56.717 回答