Ответ 1
Вы пытались позвонить ToArray()
на i.data
?
var img = from i in db.images
where i.id == key
select i.data.ToArray();
System.Data.Linq.Binary
имеет метод ToArray
только для этой цели.
Я сохраняю байты в таблице базы данных. Когда я получаю его с 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
, но это не сработало.
Вы пытались позвонить ToArray()
на i.data
?
var img = from i in db.images
where i.id == key
select i.data.ToArray();
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();
}
Или иначе, щелкните по двоичному полю из файла .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();
}
Надеюсь, что вам будет полезно!
(byte[])linqBinaryField.ToArray()