你如何在Linq中实现多个内连接

use*_*433 6 linq sql-server linq-to-entities

我已经搜索过SO并且无法为此找到可行的解决方案.我只想弄清楚Linq to Entities中多个内连接的语法是什么.谢谢

Cra*_*ntz 9

Jon的答案可行,但是使用LINQ to Entities连接的 IMHO 通常是错误的,因为它复制了模型中的代码.我可以在L2E中以更简单的方式重写Jon的查询:

var query = from customer in db.Customers
            from order in customer.Orders
            from product in order.Products
            from info in product.Info
            select new
            {
                customer.Name, 
                info.BriefDescription
            }
Run Code Online (Sandbox Code Playgroud)

这大约是打字的50%和重复代码的0%.请考虑您的关系已在数据库和模型中定义.您是否真的想在您编写的每个查询中再次复制它们,并在重构模型时中断查询?

  • @Craig - 我希望我能理解几个小时前我在这里看到的东西.我错过的是"来自customer.Order的订单" - 我做的相当于"来自db.Orders的订单",这完全不同.不过,谢谢你. (3认同)

Jon*_*eet 7

好吧,我不太了解LINQ to Entities,但正常的LINQ语法是:

var query = from customer in db.Customers
            join order in db.Orders on customer.ID equals order.ID
            join product in db.Products on order.ProductID equals product.ID
            join info in db.Info on product.InfoID equals info.ID
            select new { customer.Name, info.BriefDescription };
Run Code Online (Sandbox Code Playgroud)

(即只有几个join条款).

现在我怀疑你已经尝试过了 - 如果是的话,出了什么问题?