将system.data.linq.binary转换为byte []

时间:2012-12-25 10:53:09

标签: linq linq-to-sql

我将字节存储在数据库表中。当我使用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; 

i.data位于linq.binary我希望它位于byte[]

我尝试使用(byte[])img,但它没有用。

4 个答案:

答案 0 :(得分:30)

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

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

System.Data.Linq.Binary只有ToArray方法才能实现此目的。

答案 1 :(得分: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

答案 2 :(得分:3)

(byte[])linqBinaryField.ToArray()

答案 3 :(得分: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();
    }

希望对你有所帮助!