使用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

从mysql中检索图像并设置为pictureBox C#

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

SQL 和 C# 从数据库中检索单个记录

如何通过MVC向数据库中添加数据?用 的是。net、C#、linq to sql 类,在线等!!!

如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?