我是LINQ的新手,我通常会用SQL解决这个问题,但现在我正在尝试用linq做同样的事情,我无法弄清楚这一点.我有3张桌子:
- 订单(OrderID,Number等)
- OrdersDetail(OrderID,ProductID,Quantity等)
- 产品(ProductID,代码,描述)
现在我需要一个包含产品匹配特定代码或描述字符串的订单列表.我的SQL将是:
SELECT * FROM Orders WHERE OrderID IN(SELECT OrderID FROM OrdersDetail WHERE ProductID IN(SELECT ProductID FROM Products WHERE Code LIKE 'FilterText%' OR Descripcion LIKE 'FilterText%'))
Run Code Online (Sandbox Code Playgroud)
我如何使用LINQ执行此操作?这也是最好的方法,特别是如果Products表很大?谢谢!
db.Orders.Where(o=>o.OrderDetails
.Any(od=>od.Product.Code.StartsWith("filterText")
|| od.Product.Description.StartsWith("filterText")))
.ToList()
Run Code Online (Sandbox Code Playgroud)