converting resultset from OleDbDataReader into list

后端 未结 3 1409
[愿得一人]
[愿得一人] 2021-01-26 16:26

Consider a Winforms app connecting to a SQL Server 2008 database and running a SQL SELECT statement:

string myConnectionString = \"Provider=SQLOLEDB         


        
相关标签:
3条回答
  • 2021-01-26 17:04

    You can try something as (adapt it for your convenience):

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    List<Person> dbItems = new List<Person>();
    
    while(myReader.Read())
    {
       Person objPerson = new Person();
    
       objPerson.Name = Convert.ToString(myReader["Name"]);
       objPerson.Age = Convert.ToInt32(myReader["Age"]);
    
       dbItems.Add(objPerson);
    }
    
    0 讨论(0)
  • 2021-01-26 17:10

    List of what? Do you have a class setup that has properties for name and finalconc? Saying you do, and it looks like this:

    public class QueryResult
    {
        public string Name { get; set; }
        //not sure what finalconc type would be, so here just using string
        public string FinalConc { get; set; }
    }
    

    Then you would do something like this:

    var queryResults = new List<QueryResult>();
    using(var myReader = myCommand.ExecuteReader())
    {
        while(myReader.Read())
        {
            queryResults.Add(new QueryResult
                { 
                    Name = myReader.GetString(myReader.GetOrdinal("name")), 
                    FinalConc = myReader.GetString(myReader.GetOrdinal("finalconc"))
                });
        }
    }
    
    0 讨论(0)
  • 2021-01-26 17:18

    Assume you have defined a class that is something like

    class MyData
    {
        public string Name {get; set;}
        public int FinalConc {get; set;} // or whatever the type should be
    }
    

    You would iterate through the results of your query to load a list.

    List<MyData> list = new List<MyData>();
    while (myReader.Read())
    {
        MyData data = new MyData();
        data.Name = (string)myReader["name"];
        data.FinalConc = (int)myReader["finalconc"]; // or whatever the type should be
        list.Add(data);
    }
    
    // work with the list
    

    If you just need one of the given fields, you can forego the class definition and simply have a List<T>, where T is the type of whatever field you want to hold.

    0 讨论(0)
提交回复
热议问题