如何转换varbinary<>到字节数组

时间:2014-05-14 17:43:44

标签: c#

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;
    }

您好我正在使用Microsoft visual studio 2013,我正在尝试使用linq将数据存储在数据库中。我无法获取图像。我的图像存储在db中作为varbinary<> 。我无法转换回二进制[]。我在数据库中有记录它仍然给出空值。

1 个答案:

答案 0 :(得分:4)

您可能只需将数据库中的图片作为Image而不是byte[]返回。

如果s.imag的类型为VARBINARY,则LINQ会将其包含为System.Data.Linq.Binary,因此您可以使用MemoryStream直接从该二进制文件创建图像。< / p>

尝试以下方法:

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,因为您没有在任何地方使用它们。