我正在尝试使用EF连接3个表格,但它会引发错误
consider swaping conditions on either side of equals有人可以帮忙
var billdata = from billtotal in context.billTotals join billcard in context.billClubcards on billtotal.OrderID equals billcard.OrderID join billtender in context.billTenders on billtender.OrderID equals billtotal.OrderID select billtotal;i am trying to join 3 tables using EF but it throws an error saying
consider swaping conditions on either side of equalscan some one pls help
var billdata = from billtotal in context.billTotals join billcard in context.billClubcards on billtotal.OrderID equals billcard.OrderID join billtender in context.billTenders on billtender.OrderID equals billtotal.OrderID select billtotal;最满意答案
编译器错误是非常正确的: -
The name 'billtender' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
你加入的桌子需要放在左边,你加入的桌子需要放在右边。 因此: -
var billData = from billtotal in context.billTotals join billcard in context.billClubcards on billtotal.OrderId equals billcard.OrderId join billtender in context.billTenders on billtotal.OrderId equals billtender.OrderId select billtotal;如果你想知道为什么,这是因为查询语法只是基本扩展方法的语法糖: -
context.billTotals .Join( context.billClubcards, billtotal => billtotal.OrderId, billclubcard => billclubcard.OrderId, (billtotal, billclubcard) => billtotal) .Join( context.billTenders, billtotal => billtotal.OrderId, billtender => billtender.OrderId, (billtotal, billtender) => billtotal);您的原始实施将扩展到: -
context.billTotals .Join( context.billClubcards, billtotal => billtotal.OrderId, billclubcard => billclubcard.OrderId, (billtotal, billclubcard) => billtotal) .Join( context.billTenders, billtotal => billtender.OrderId, // billtender isn't in scope! billtender => billtotal.OrderId, // billtotal isn't in scope! (billtotal, billtender) => billtotal);The compiler error is quite correct:-
The name 'billtender' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
The table you're joining from needs to be on the left, the one you're joining onto needs to be on the right. Hence:-
var billData = from billtotal in context.billTotals join billcard in context.billClubcards on billtotal.OrderId equals billcard.OrderId join billtender in context.billTenders on billtotal.OrderId equals billtender.OrderId select billtotal;If you're wondering why, it's because the query syntax is just syntactic sugar for the underlying extension method:-
context.billTotals .Join( context.billClubcards, billtotal => billtotal.OrderId, billclubcard => billclubcard.OrderId, (billtotal, billclubcard) => billtotal) .Join( context.billTenders, billtotal => billtotal.OrderId, billtender => billtender.OrderId, (billtotal, billtender) => billtotal);Your original implementation would expand to:-
context.billTotals .Join( context.billClubcards, billtotal => billtotal.OrderId, billclubcard => billclubcard.OrderId, (billtotal, billclubcard) => billtotal) .Join( context.billTenders, billtotal => billtender.OrderId, // billtender isn't in scope! billtender => billtotal.OrderId, // billtotal isn't in scope! (billtotal, billtender) => billtotal);更多推荐
发布评论