LINQ包含查询

时间:2014-04-24 18:17:59

标签: c# sql linq

我是LINQ的新手,我通常会用SQL解决这个问题,但现在我正在尝试用linq做同样的事情,我无法弄清楚这一点。 我有3张桌子:

  
      
  • 订单(OrderID,Number等)
  •   
  • OrdersDetail(OrderID,ProductID,Quantity等)
  •   
  • 产品(产品ID,代码,说明)
  •   

现在我需要一个包含产品匹配特定代码或描述字符串的订单列表。我的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%'))

如何使用LINQ执行此操作?这也是最好的方法,特别是如果Products表很大?谢谢!

2 个答案:

答案 0 :(得分:5)

db.Orders.Where(o=>o.OrderDetails
                        .Any(od=>od.Product.Code.StartsWith("filterText") 
                           || od.Product.Description.StartsWith("filterText")))
          .ToList()

答案 1 :(得分:3)

试试这个:

var q = (from o in Orders
        from d in o.OrderDetails
        from p in d.Product
        where p.Code.StartsWith("your filter") || p.Description.StartsWith("your filter")
        select o);