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

标签 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,然后再转换为图像?不过,我找不到有关如何执行此操作的示例。

最佳答案

应该这样做:

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?如果是这样,请获取该数据而不是实际数据,然后设置一个 URL,该 URL 能够根据 ID 提供任何缩略图(通过从数据库中获取它并使用适当的内容类型提供它)。

关于c# - 使用 Linq to SQL 从数据库中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266223/

相关文章:

c# - 模拟对象不具有 Intellisense 中显示的所有属性 - 在一个项目中但在另一个项目中具有它们

javascript - 为什么我的正则表达式在 .NET 中有效,但在 Javascript 中无效?

c# - 如何将 "AutoSize"设置为 Excel 工作表列? (非营利组织)

.net - Silverlight 与 Flex

c# - 为什么 ToString() 会如此显着地降低 Entity Framework 的性能

c# - 我如何检查我的值是否与其他值匹配,例如配对游戏

c# - 无法添加到类对象中的列表

c# - 如何在 ASP.Net 中确定上传图像的颜色模式

C# LINQ - 读取 XML

sql - Linq 版 SQL "IN"语句