从数据表中获取字节数组以列出C#

时间:2018-10-18 10:50:30

标签: c# arrays list datatable

我给了byte[]存储在数据库中,

我从SQL获取DataTable中的字节数组

Image

这是我的DataTable,System.byte []是我的图像(以字节为单位),存储在数据库中

现在我想将此DataTable转换为列表

这是我当前的代码

var answerList = (from rw in dt.AsEnumerable()
                    select new RegistrationAnswers()
                    {
                        responseID = rw["responseID"].ToString() == string.Empty ? 0 : Convert.ToInt32(rw["responseID"].ToString()),
                        responseRegID = rw["responseRegID"].ToString() == string.Empty ? 0 : Convert.ToInt32(rw["responseRegID"].ToString()), 
                        responseAnswer = rw["responseAnswer"].ToString(),
                        _ResponseDocument =  rw["responseDocument"], //here i want to validate if rw["responseDocument"] is null or not and if this is not null then assign the byte[] data to _ResponseDocument 
                        formID=Convert.ToInt32(rw["formID"])
                    }).ToList();

我将代码更新为

//At top
byte[] tempByteArray = new byte[0];

_responseDocument = Convert.IsDBNull((byte[])rw["responseDocument"]) == false ? tempByteArray : (byte[])rw["responseDocument"],

我遇到以下错误

“无法将类型为“ System.DBNull”的对象转换为类型为“ System.Byte []”。”

  

我想验证rw [“ responseDocument”]是否为null以及是否   这不是null,然后将byte []数据分配给_ResponseDocument

2 个答案:

答案 0 :(得分:1)

尝试投射

rw["responseDocument"] == System.DBNull.Value ? new byte[0] : (byte[])rw["responseDocument"];

Convert.IsDBNull(rw["responseDocument"]) ? new byte[0] : (byte[])rw["responseDocument"];

答案 1 :(得分:0)

将数据从DataTable放入list

时遇到了同样的问题

我所做的是在方法中创建一个字节数组

byte[] tempByteArray = new byte[0];

在我的循环中做了这样的事情

_responseDocument = rw["responseDocument"].ToString() == "" ? tempByteArray : (byte[])rw["responseDocument"],