我正在尝试获取单个产品的所有图像和bullet_points。 Images和Bullet_Points具有外键Product_ID供参考。但是,即使我只有8个bullet_points,单个产品有5个图像,我总共得到40行。我做错了什么?
以下是我正在执行的linq查询。
from p in Products
from i in Images
from s in Specifications
where p.ProductID==i.Product_ID && p.ProductID==5002
where p.ProductID==s.Product_ID && p.ProductID==5002
select new { p.ProductID,i.Image_URL,s.Bullet_Point}
答案 0 :(得分:1)
尝试以下查询:
from p in Products
join i in Images on i.Product_ID equals p.ProductID into imgs
join s in Specifications on s.Product_ID equals p.ProductID into specs
where p.ProductID == 5002
select new { p.ProductID,
urls = imgs.Select(x => x.Image_URL),
bulletPoints = specs.Select(x => x.Bullet_Point) };
为什么不使用Product
的导航属性?我可以看到您的Product
模型具有Images
和Specifications
属性。所以你也可以试试:
Products.Where(p => p.ProductID == 5002).Select(p => new {
p.ProductID,
urls = p.Images.Select(x => x.Image_URL),
bulletPoints = p.Specifications.Select(x => x.Bullet_Point) })