如何从DataReader的投入值放入名单,其中,T>? [英] How to put values from DataReader into List<T>?

查看:212
本文介绍了如何从DataReader的投入值放入名单,其中,T>?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  

可能重复:
  我如何可以轻松地将DataReader的列出< T&GT ;?

我希望把它从DataReader对象中的一个泛型列表传来的数据。我曾经做过这样的,但它不工作...

我收到的foreach中连续投异常错误!

  SqlDataReader的pointreader = cmd2.ExecuteReader();
 VAR pointt =新的名单,其中,INT>();
 而(pointreader.Read())
 {
     的foreach(在pointreader INT项)
     {
        pointt.Add(项目);
         如果(pointt.Contains(点))
         {
             matchpoint =项目;
         }
     }
 }
 

解决方案

SqlDataReader对象不能在你所描述的,因为它没有实现IEnumerable的方式进行访问。相反,你需要单独访问每个字段:

  SqlDataReader的puanoku = cmd2.ExecuteReader();
名单< INT> puann =新的名单,其中,INT>();
而(puanoku.Read())
{
    的for(int i = 0; I< puanoku.FieldCount;我++)
    {
        如果(puanoku.GetFieldType(ⅰ)== typeof运算(INT))
        {
            //做的东西在这里
        }
    }
}
 

如果你只选择了一列,可以肯定,它是一个整数,那么可以简化code像这样:

  SqlDataReader的puanoku = cmd2.ExecuteReader();
名单< INT> puann =新的名单,其中,INT>();
而(puanoku.Read())
{
    int值= puanoku.GetInt32(1);

    //做一些与这里的INT ...
}
 

文章可能是一些使用。

Possible Duplicate:
How can I easily convert DataReader to List<T>?

I want to put the data which is coming from datareader object in a generic list. I have done like this but it doesn't work...

I am getting cast exception error in foreach row!

 SqlDataReader pointreader = cmd2.ExecuteReader();
 var pointt = new List<int>();
 while (pointreader.Read())
 {
     foreach (int item in pointreader)
     {
        pointt.Add(item);
         if (pointt.Contains(point))
         {
             matchpoint = item;
         }
     }
 }

解决方案

SqlDataReader cannot be accessed in the way you have described as it does not implement IEnumerable. Instead you need to access each field individually:

SqlDataReader puanoku = cmd2.ExecuteReader();
List<int> puann = new List<int>();
while (puanoku.Read())
{
    for (int i = 0; i < puanoku.FieldCount; i++)
    {
        if (puanoku.GetFieldType(i) == typeof(int))
        {
            // Do something here
        }
    }
}

If you've only selected one column and are certain that it is an int then you can simplify the code like so:

SqlDataReader puanoku = cmd2.ExecuteReader();
List<int> puann = new List<int>();
while (puanoku.Read())
{
    int value = puanoku.GetInt32(1);

    // Do something with the int here...
}

This article may be of some use.

这篇关于如何从DataReader的投入值放入名单,其中,T&GT;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆