2012-12-25 185 views
11

我将字节存储在数据库表中。当我用Linq 2 sql检索它时,我得到system.data.linq.Binary中的返回类型。将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; 

i.datalinq.binary我希望它是在byte[]。我试过(byte[])img,但没有奏效。

+0

你是如何将'Binary'改为'byte'的? – spajce

回答

0

你可以试试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(); 
    } 

希望这有助于您!

+0

nope dude dosent wrk我正在使用LINQ to sql来“检索”该值并将其读入字节数组转换是从System.Data.Linq.Binary到System.byte [] – user1797079

+0

此答案无用 - 问题询问关于将'System.Data.Linq.Bin ary'转换为'byte []',但这个例子将文件路径转换为一个'byte []'表示,其间有一个“Bitmap”。 –

+0

答案与OP的问题无关。答案不包含Linq.Binary类型的引用,该类型是OP要查找的50%。在发布答案之前请正确阅读问题。 – Bertie

24

您是否试过在i.data上致电ToArray()

var img = from i in db.images 
     where i.id == key 
     select i.data.ToArray(); 

System.Data.Linq.Binary刚刚实现这一目的的方法ToArray

+0

亚它它dosent工作的人它返回System.Data.Linq.Binary []二进制数组是这样的:( – user1797079

+0

加上我们可以用它作为'var img =(从我在db.images 其中i.id = = key select i.data).ToArray();' – user1797079

+1

'ToArray()'调用必须位于'i.data'上,您将调用放在圆括号后面,这会让您成为IEnumerable '然后你调用'IEnumerable'上的'ToArray'。我假设只能有一个图像,然后看起来像你想'var img =(从我在db.images中i.id == key选择i.data).First()。ToArray();''你可能想要在First()后进行空检查。 –

5

可能是它现在为时已晚,但可以帮助别人:)

//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(); 
} 

否则,请点击从.dbml文件,打开属性的二进制字段,然后从二进制更改字段类型byte[]如发现here

0
(byte[])linqBinaryField.ToArray() 
+1

不是在发布答案时,您可以添加一点解释,以更好地理解OP和未来的读者。 –