LINQ to Entities中的子查询

时间:2012-03-04 17:07:42

标签: linq-to-entities

我在LINQ to SQL中有一个工作查询。我需要将它转换为LINQ to Entities。

(from pr in Products
join c in Categories on pr.CategoryID equals c.CategoryID
join b in Colors on pr.ColorID equals b.ColorID
select new{
ProductID = pr.ProductID,
Manufacturer = pr.Manufacturer.Name,
Model = v.Model.ModelName,
Category = c.Name,
Photos = from p in Photos where pr.ProductID == p.ProductID select p
}).FirstOrDefault()

当我使用它时,我收到错误:

  

无法创建类型的常量值仅基本类型('等等   因为在这种情况下支持Int32,String和Guid'。

问题出在这一部分:

Photos = from p in Photos where pr.ProductID == p.ProductID select p

2 个答案:

答案 0 :(得分:1)

LINQ to Entities为您自动管理相关查询(假设您的所有键/关系都已正确定义)。

试试这个:

(from pr in Products
select new{
ProductID = pr.ProductID,
Manufacturer = pr.Manufacturer.Name,
Model = pr.Color.Model.ModelName,
Category = pr.Category.Name,
Photos = pr.Photos
}).FirstOrDefault()

另见本文(http://msdn.microsoft.com/en-us/library/bb896321.aspx)

答案 1 :(得分:0)

我终于以一种非常简单的方式解决了它 - 我将该查询分为两种方法:

GetAllProducts()
GetAllPhotos()

并通过ProductsDTO加入结果,该结果具有两个查询的所有属性。