C# 三重Linq查询

C# 三重Linq查询,c#,linq,C#,Linq,我正试图用C#编写一个linq查询,它将返回收到他们订购的所有商品但无法计算出来的客户列表 我的数据库架构如下所示: 表名:客户,主字段:CustomerId 表名:订单,主字段:订单ID,外键:CustomerId 表名称:OrderLineItems,主字段:LineItemId,外键:OrderId 行项目表还有一个名为“状态”的字段,其中我指示此项目是否已“订购”、“延期订购”、“已装运”等 我要找的是至少有一个订单的客户列表(我对没有订单的客户不感兴趣),我只对至少有一个项目的订单感兴

我正试图用C#编写一个linq查询,它将返回收到他们订购的所有商品但无法计算出来的客户列表

我的数据库架构如下所示:
表名:客户,主字段:CustomerId
表名:订单,主字段:订单ID,外键:CustomerId
表名称:OrderLineItems,主字段:LineItemId,外键:OrderId

行项目表还有一个名为“状态”的字段,其中我指示此项目是否已“订购”、“延期订购”、“已装运”等

我要找的是至少有一个订单的客户列表(我对没有订单的客户不感兴趣),我只对至少有一个项目的订单感兴趣(以防有人创建一个没有任何项目的空订单),最后我的最后一个标准是所有项目都必须具有给定的状态(比如说:'Shipped')

如果我要编写SQL查询,它将如下所示:

SELECT  c.*
  FROM  Customers c 
        INNER JOIN Orders o ON c.CustomerId = o.CustomerId
        INNER JOIN (SELECT oli.OrderId, COUNT(*) AS [NumberOfItems] FROM OrderLineItems oli WHERE oli.Status <> 'Shipped' GROUP BY oli.OrderId) items ON o.OrderId = items.OrderId
 WHERE  items.NumberOfItems = 0
var customers = from c in context.Customers
    where ...
    select c;
Orders.Any()
标准适用于您的要求“至少有一个订单的客户”; “我只对至少有一个项目的订单感兴趣”的
OrderLineItems.Any()
标准,以及“所有项目必须具有给定状态”的
OrderLineItems.All()
标准

Orders.Any()
标准适用于您的要求“至少有一个订单的客户”; “我只对至少有一个项目的订单感兴趣”的
OrderLineItems.Any()
标准,以及“所有项目必须具有给定状态”的
OrderLineItems.All()
标准

customers.Where(c => c.Orders.Any(o => 
    o.OrderLineItems.Any() 
    && o.OrderLineItems.All(i => i.Status == requestedStatus)))