17

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

我试过了,(byte[])img但没有用。

4

4 回答 4

39

你试过打电话ToArray()i.data

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

System.Data.Linq.Binary有一个ToArray专门用于此目的的方法。

于 2012-12-26T13:06:20.810 回答
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 文件中的 Binary 字段,打开属性,然后将字段类型从 Binary 更改byte[]为在此处找到的

于 2013-05-08T06:44:00.283 回答
4
(byte[])linqBinaryField.ToArray()
于 2017-08-14T12:20:17.233 回答
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();
    }

希望对你有帮助!

于 2012-12-25T11:54:04.700 回答