使用Linq to SQL从数据库中检索图像

Kab*_*lam 6 .net c# linq linq-to-sql

在我的数据库中,我将图像存储在"图像"数据类型中,显示为二进制代码.我现在想从一列中检索所有图像,并使用C#将它们显示在asp.net页面上.

databaseDataContext db = new databaseDataContext();

    var images = from Picture p in db.Pictures
                 select p.pictureThumb;
Run Code Online (Sandbox Code Playgroud)

然后我用这个:

    foreach (Picture p in images)
    {
        galleryImages.Controls.Add(p);
    }
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为Binary无法转换为Picture.我用谷歌搜索了这个,发现我必须转向Byte然后成像?我找不到如何做到这一点的例子.

Jon*_*eet 12

这应该这样做:

databaseDataContext db = new databaseDataContext();

var images = from p in db.Pictures
             select Image.FromStream(new MemoryStream(p.pictureThumb.ToArray());
foreach (Image image in images)
{
    galleryImages.Controls.Add(image);
}
Run Code Online (Sandbox Code Playgroud)

请注意,Image.FromStream获取流的所有权 - 它只是一个MemoryStream,但确保您出于各种原因处理图像.


编辑:啊......我没有意识到这是针对ASP.NET的.这会让事情变得更难 - 因为HTML将包含URL,然后您需要能够以后获取数据.

图片是否有某种ID?如果是这样,请获取该数据而不是实际数据,然后设置一个URL,该URL能够根据ID提供任何缩略图(通过从数据库中提取并仅使用适当的内容类型提供).