LINQ – 嵌套查询

我有一个SQL语句,我试图转换为LINQ查询。 我需要这样做,因为我无法编辑我的数据库:(。无论如何,我有一个如下所示的SQL语句:

SELECT CustomerID, FirstName, LastName, Gender, BirthMonth, (SELECT COUNT(ID) FROM PurchaseOrder WHERE [CustomerID]=CustomerID) as TotalPurchases FROM MyEntities 

我知道如何在LINQ中执行除嵌套查询部分之外的所有操作。 目前,我有以下内容:

 var results = from x in context.MyEntities select new Customer() { CustomerID = x.CustomerID, FirstName = x.FirstName, LastName = x.LastName, Gender = x.Gender, BirthMonth = x.BirthMonth, TotalPurchases = ? }; 

如何在LINQ中执行嵌套查询以获取TotalPurchases的值?

非常感谢!

您也可以将Linq嵌套到实体查询:

 var results = from x in context.MyEntities select new Customer() { CustomerID = x.CustomerID, FirstName = x.FirstName, LastName = x.LastName, Gender = x.Gender, BirthMonth = x.BirthMonth, TotalPurchases = context.PurchaseOrders .Where(po=>po.CustomerId == x.CustomerId) .Count() }; 

只需对“PurchaseOrders”的导航属性进行计数,我假设该属性位于Customer实体上。

 TotalPurchases = x.PurchaseOrders.Count() 

当使用Linq to Entities时,BrokenGlass的答案对我不起作用,并导致错误声明“无法创建类型’MyEntity’的常量值。在此上下文中仅支持基本类型或枚举类型。”

为了克服这个问题,我使用了以下内容:

 var results = from x in context.MyEntities join po in context.PurchaseOrders on x.CustomerID equals po.CustomerID into purchaseOrders select new Customer() { CustomerID = x.CustomerID, FirstName = x.FirstName, LastName = x.LastName, Gender = x.Gender, BirthMonth = x.BirthMonth, TotalPurchases = purchaseOrders.Count() };