如何转换二进制<>到字节数组

本文关键字:到字节 数组 二进制 何转换 转换 | 更新日期: 2023-09-27 18:03:26

public byte[] ReturndbImage()
    {
        Image_table table = new Image_table();
        var row = from s in db.Image_tables
                  where s.Id == 1
                  select s.imag;
        byte[] b = null ;
        int cou = row.Count();
        b = (byte[])(row).Single().ToArray(); 
        return b;
    }

嗨,我正在使用微软visual studio 2013,我正试图使用linq在数据库中存储图像。我无法获得图像。我的图像存储在数据库varbinary<> .我无法转换回二进制[]。我在数据库中有记录,它仍然给空值。

如何转换二进制<>到字节数组

您应该从数据库返回图像作为Image而不是byte[]

如果s.imagVARBINARY类型,那么LINQ将把它包含为System.Data.Linq.Binary,所以你可以直接从二进制文件中创建图像,使用MemoryStream

尝试以下操作:

public Image ReturnDbImage()
{
    var dbBinary = (from s in db.Image_tables
               where s.Id ==1
               select s.imag).FirstOrDefault();
    if (dbBinary == null)
    {
        //Handle the issue
    }
    else
    {
        using (var ms = new MemoryStream(dbBinary.ToArray()))
        {
            Image img = Image.FromStream(ms);
            return img;
        }
    }
}

我已经从方法中删除了不必要的变量coutable,因为您没有在任何地方使用它们。