17

データベーステーブルにバイトを保存しています。Linq 2 sql で取得すると、戻り値の型が で取得されsystem.data.linq.Binaryます。

system.data.linq.binaryをbyte array( )に変換できません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たが、うまくいきませんでした。

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.BinaryToArrayそのためだけのメソッドがあります。

于 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 に答える
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 に答える