我将字节存储在数据库表中.当我用Linq 2 sql检索它时,我得到了返回类型system.data.linq.Binary
.
我无法转换system.data.linq.binary
为字节数组(byte[]
).
我该如何转换它?
///my datacontext
var db = new db();
//key is an value from user
var img = from i in db.images
where i.id == key
select i.data;
Run Code Online (Sandbox Code Playgroud)
该i.data
是linq.binary
我希望它是byte[]
.
我试过(byte[])img
但它没有用.
Mik*_*Two 31
你试过打电话ToArray()
的i.data
?
var img = from i in db.images
where i.id == key
select i.data.ToArray();
Run Code Online (Sandbox Code Playgroud)
System.Data.Linq.Binary
有一个ToArray
方法只是为了这个目的.
可能现在已经太晚了但可能会帮助别人:)
//testTable PK:ID, binaryData :binary(32)
public void insertDummyData()
{
DBML.testTable v = new DBML.testTable ();
v.ID = 1;
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
v.binaryData = new System.Data.Linq.Binary(encoding.GetBytes("11111111000000001111111100000000"));
db.testTable.InsertOnSubmit(v);
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
或者,单击.dbml文件中的二进制字段,打开属性,然后将字段类型从二进制更改byte[]
为此处
你可以试试MemoryStream。我在项目中编写了一个函数将图像转换为字节数组,如下所示:
public static byte[] Image2ByteArr(string filename)
{
Bitmap bm = new Bitmap(getPath(filename));
MemoryStream ms = new MemoryStream();
bm.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
希望对您有帮助!