无法找到与外键相关的值而无需重复

时间:2017-03-13 06:45:57

标签: c# linq linq-to-sql asp.net-mvc-5

我正在尝试获取单个产品的所有图像和bullet_points。 Images和Bullet_Points具有外键Product_ID供参考。但是,即使我只有8个bullet_points,单个产品有5个图像,我总共得到40行。我做错了什么?

enter image description here

以下是我正在执行的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}

enter image description here

enter image description here

1 个答案:

答案 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模型具有ImagesSpecifications属性。所以你也可以试试:

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) })