1

私はエンティティ フレームワークを初めて使用し、次のように 2 つのエンティティで結合句を使用しようとしています。

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,



                        };

こんにちは、上記のコードから、次の 2 つのエラーが表示されます

'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 つのテーブルにはデータがありません。誰かがこの状況で私を助けることができれば幸せです

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 joinのドキュメントを見てください

于 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先のテーブルにあります

さらに、上記のようにequalsnotという単語も使用する必要があります==

于 2013-04-18T05:49:56.717 に答える