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

时间:2009-08-12 13:37:46

标签: c# .net linq linq-to-sql

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

databaseDataContext db = new databaseDataContext();

    var images = from Picture p in db.Pictures
                 select p.pictureThumb;

然后我用它:

    foreach (Picture p in images)
    {
        galleryImages.Controls.Add(p);
    }

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

1 个答案:

答案 0 :(得分: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);
}

请注意,Image.FromStream取得了流的所有权 - 无论如何它只是MemoryStream,但请确保您出于各种原因处置图像。


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

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