使用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然后成像? 我找不到如何做到这一点的例子。

这应该这样做:

 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(通过从数据库中获取并仅使用适当的内容类型提供)。