从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"],