使用linq mvc c#从数据库中检索图像
Posted
技术标签:
【中文标题】使用linq mvc c#从数据库中检索图像【英文标题】:Retrieve images from database using linq mvc c# 【发布时间】:2021-10-06 08:28:49 【问题描述】:我有 2 个表 ProductDetails 和 Images,我将缩略图图像保存到 ProductsDetail 表中,并将所有其他相关图像保存到 Images 表中。保存很好,但我正在为图像检索而苦苦挣扎。 我想从图像表而不是 productDetail 表中检索产品的缩略图。 我需要有关此逻辑的帮助,请帮助提供一些代码示例。另外请让我知道逻辑是正确还是错误?请参阅下面的课程
public class ProductDetail
public int pro_id get; set;
public string pro_name get; set;
public string pro_model get; set;
public string pro_Dimensions get; set;
public string pro_imageTitle get; set; // (thumbnail image)
public string pro_image get; set;
public string pro_desc get; set;
public Nullable<double> pro_price get; set;
public int pro_UnitsInStock get; set;
public Nullable<double> pro_oldprice get; set;
public virtual ICollection<Images> tbl_Images get; set;
public class Images
public int ImageID get; set;
public int pro_id get; set;
public string ImageTitle get; set;
public string ImagePath get; set;
目前,我尝试了一些 linq 代码,但它返回重复的产品,我只想为每个产品显示 1 个缩略图。
IEnumerable<ProductList> List =
(from prod in this.storeDB.tbl_Product
join img in this.storeDB.tbl_Images on prod.pro_id
equals img.pro_id
select new ProductList
pro_id = prod.pro_id,
pro_name = prod.pro_name,
pro_model = prod.pro_model,
pro_Dimensions = prod.pro_dimensions,
pro_UnitsInStock = (int)prod.pro_UnitsInStock,
pro_oldprice = prod.pro_oldprice,
pro_price = (double)prod.pro_price,
pro_isFeatured = prod.pro_isFeatured,
pro_isOnSale = prod.pro_isOnSale,
pro_desc = prod.pro_desc,
ImageID =img.img_id,
ImageTitle = img.ImageTitle
);
【问题讨论】:
请添加一些逻辑。 【参考方案1】:图像表中可能有多个图像返回重复值。
首先将 image 表分组,然后将join
结果与 product 表分组。
IEnumerable<ProductList> List =
(from img in this.storeDB.tbl_Images
group img by img.pro_id into imggr
join prod in this.storeDB.tbl_Product on imggr.pro_id
equals prod.pro_id
select new ProductList
pro_id = prod.pro_id,
pro_name = prod.pro_name,
pro_model = prod.pro_model,
pro_Dimensions = prod.pro_dimensions,
pro_UnitsInStock = (int)prod.pro_UnitsInStock,
pro_oldprice = prod.pro_oldprice,
pro_price = (double)prod.pro_price,
pro_isFeatured = prod.pro_isFeatured,
pro_isOnSale = prod.pro_isOnSale,
pro_desc = prod.pro_desc,
ImageID = imggr.FirstOrDefault().img_id,
ImageTitle = imggr.FirstOrDefault().ImageTitle
);
【讨论】:
【参考方案2】:我通过在图像表中添加缩略图图像的标志解决了这个问题。
【讨论】:
以上是关于使用linq mvc c#从数据库中检索图像的主要内容,如果未能解决你的问题,请参考以下文章
LINQ 查询在 C# 中使用实体框架获取单列和单行值而不使用 Where
如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录