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<> 。我无法转换回二进制[]。我在数据库中有记录它仍然给出空值。
答案 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;
}
}
}
我已从方法中删除了不必要的变量cou
和table
,因为您没有在任何地方使用它们。