猿问

关于dataReader给Ilist赋值的问题

using (IDataReader reader = helper.CreateQuery(sql_getComments).ExecuteReader())
{
   if(reader.read())
   {
       
    commentsList = BindObject.BindObjectToInstance(typeof(Comment), reader);
  }
}

这样获取数据时会丢失第一条数据,而如果去掉

if(reader.read())这句后则可以正确获取数据。

请问,datareader在给Ilist赋值时为什么不能加入if(reader.read())?谢谢!


温温酱
浏览 559回答 2
2回答

紫衣仙女

              commentsList = BindObject.BindObjectToInstance(typeof(Comment), reader);

慕后森

SqlDataReader是单向只读的,Read ()之后当前记录就无法获取了,你可是使用HasRows属性判断SqlDataReader是否有数据,然后再执行绑定,这样就不会丢失第一条数据了
随时随地看视频慕课网APP
我要回答