【问题标题】:Joining multiple tables using Entity Framework使用实体框架连接多个表
【发布时间】:2012-10-30 15:05:39
【问题描述】:

我正在尝试使用 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;

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    编译器错误非常正确:-

    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);
    

    【讨论】:

      【解决方案2】:

      你要加入的表的属性需要在equals的右边

      切换

      来自:on billtender.OrderID equals billtotal.OrderID

      收件人:on billtotal.OrderID equals billtender.OrderID

      【讨论】:

        猜你喜欢
        • 2020-08-14
        • 2014-03-08
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多