从datatable获取字节数组到列表c#

从datatable获取字节数组到列表c#,c#,arrays,list,datatable,C#,Arrays,List,Datatable,我给了一个存储在数据库中的字节[] 我从sql中获取数据表中的字节数组 这是我的数据表,系统。字节[]是我的图像,以字节为单位,存储在我的数据数据库中 现在我想把这个DataTable转换成list 这是我当前的代码 var answerList = (from rw in dt.AsEnumerable() select new RegistrationAnswers() {

我给了一个存储在数据库中的
字节[]

我从sql中获取
数据表中的字节数组

这是我的
数据表
,系统。字节[]是我的图像,以字节为单位,存储在我的数据数据库中

现在我想把这个
DataTable
转换成list

这是我当前的代码

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,然后将字节[]数据分配给_ResponseDocument

试铸

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


在将数据从
DataTable
获取到
list

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

byte[] tempByteArray = new byte[0];
在我的循环中做了类似的事情

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

如果字节数据为null,那么_ResponseDocument应该是什么?_ResponseDocument=(rw[“ResponseDocument”]==null)?null:LoadBytesSomeHowFor(rw)您似乎在检查IsDBNull是否为false,如果为false,则分配tempByte数组,即,如果不是null,则分配tempByteArray。这似乎是错误的方式round@stuartd检查问题-答案很贴切,几乎可以肯定是正确的,因为OP的好处:这里的问题是,在问题的代码中,您正在转换到
byte[]
在检查
DBNull
之前-此处显示的代码仅在
DBNull
检查之后强制转换如果
rw
是一个
DataRow
(从周围的代码中我怀疑它是),它有一个
IsNull
方法,可以调用该方法,而不是检索和比较
DBNull
值。
_responseDocument = rw["responseDocument"].ToString() == "" ? tempByteArray : (byte[])rw["responseDocument"],