【问题标题】:Converting a DataTable to my List<T>将 DataTable 转换为我的 List<T>
【发布时间】:2017-05-19 07:26:58
【问题描述】:
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
            SqliteDataReader rdr = cmd.ExecuteReader();
            dt.Load(rdr);
            return dt;

DataTable tb = new DataTable();List&lt;Details&gt; objList = new List&lt;Details&gt;

            foreach (var obj in dt)
            {
                var item = new Details();
                item.ID = obj.ID;
                item.Dosage = obj.Dosage;
                item.Drug = obj.Drug;
                item.Patient = obj.Patient;
                item.Date = obj.Date;

                results.Add(item);
            }

想法就在这里,但是 dt in forceach(var obj in dt) 有错误

【问题讨论】:

  • 转换到底如何?
  • 将数据中的所有值传递给对象列表
  • 那么你尝试了什么? Detail的字段是什么?你的数据表有哪些字段?
  • Details 有自己的类,具有 Id、Dosage、Drug、Patient 和 Date 属性,并且数据表从我的选择查询 select * from details 中获取其所有值;
  • 转换很大程度上取决于数据库表数据类型,您缺少有关表结构的信息。顺便说一句,xamarin 标记看起来与您的问题无关。

标签: c# sqlite xamarin


【解决方案1】:

你必须

  1. 执行阅读器
  2. 阅读游标
  3. 创建您的类实例
  4. 将这些实例收集到List&lt;T&gt;

像这样的

   // List which will be used to collect records from the query
   List<MyClass> list = new List<MyClass>();

   ...
   cmd.CommandText = sql;

   //DONE: execute reader; wrap IDisposable into using
   using (SqliteDataReader rdr = cmd.ExecuteReader()) {
     //DONE: read each cursor's record
     while (rdr.Read()) {
       //DONE: Turn each record into MyClass instance
       MyClass item = new MyClass();

       //TODO: Assign properties
       item.Property1 = Convert.ToString(rdr[0]);
       item.Property2 = Convert.ToInt32(rdr[1]); 
       ...  

       //DONE: Finally, collect all the intances created into the list 
       list.Add(item);
     }      
   } 
   ...

【讨论】:

  • 你是男人,你是怎么输入这些东西的? :)
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2014-01-17
相关资源
最近更新 更多