我一直在尝试将我拥有的SQL转换为lambda表达式。但是我现在花了太多时间试图解决它,希望你们可以解释一下我的解决方案。
SELECT *
FROM Products
INNER JOIN Details on Products.ID = Details.ID
INNER JOIN Orders ON Details.ID = Orders.ID
尝试:
db.Products.Include(x => x.Details)
.Include("Details.Orders");
尝试使用Join
方法也无济于事。它需要以Iqueryable
的形式返回。我认为使用include会简化连接过程,但它似乎更复杂。无论我使用Include
包含哪些表格,它似乎都无法获得Orders
。
答案 0 :(得分:0)
如果您使用EF,您可以这样做:
db.Products.Include(x => x.Details)
.Include(x => x.Details.Orders);
否则,使用LINQ to SQL,您可以将SQL翻译为:
from p in db.Products
join d in db.Details on p.ID equals d.ID
join o in db.Orders on d.ID equals o.ID
select new { p, d, o};
将lambda语法转换为:
db.Products.Join(db.Details, p => p.ID, d => d.ID, (p,d) => new { p, d })
.Join(db.Orders, d => d.ID, o => o.ID, (pd, o) => new { pd.p, pd.d, o });