<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      DataTable轉換成IList

      作者:陳太漢

      DataTable轉換成IList

      在用C#作開發的時候經常要把DataTable轉換成IList;操作DataTable比較麻煩,把DataTable轉換成IList,以對象實體作為IList的元素,操作起來就非常方便。

      注意:實體的屬性必須和數據庫中的字段必須一一對應,或者數據庫字段名.ToLower().Contains(實體屬性名.ToLower())

                數據類型暫時至支持int、string、DateTime、float、double

       

      using System;
      using System.Collections;
      using System.Collections.Generic;
      using System.Data;
      using System.Reflection;

      namespace TBToListTest
      {
      public class TBToList<T> where T : new()
      {
      /// <summary>
      /// 獲取列名集合
      /// </summary>
      private IList<string> GetColumnNames(DataColumnCollection dcc)
      {
      IList
      <string> list = new List<string>();
      foreach (DataColumn dc in dcc)
      {
      list.Add(dc.ColumnName);
      }
      return list;
      }

      /// <summary>
      ///屬性名稱和類型名的鍵值對集合
      /// </summary>
      private Hashtable GetColumnType(DataColumnCollection dcc)
      {
      if (dcc == null || dcc.Count == 0)
      {
      return null;
      }
      IList
      <string> colNameList = GetColumnNames(dcc);

      Type t
      = typeof(T);
      PropertyInfo[] properties
      = t.GetProperties();
      Hashtable hashtable
      = new Hashtable();
      int i = 0;
      foreach (PropertyInfo p in properties)
      {
      foreach (string col in colNameList)
      {
      if (col.ToLower().Contains(p.Name.ToLower()))
      {
      hashtable.Add(col, p.PropertyType.ToString()
      + i++);
      }
      }
      }

      return hashtable;
      }

      /// <summary>
      /// DataTable轉換成IList
      /// </summary>
      /// <param name="dt"></param>
      /// <returns></returns>
      public IList<T> ToList(DataTable dt)
      {
      if (dt == null || dt.Rows.Count == 0)
      {
      return null;
      }

      PropertyInfo[] properties
      = typeof(T).GetProperties();//獲取實體類型的屬性集合
      Hashtable hh = GetColumnType(dt.Columns);//屬性名稱和類型名的鍵值對集合
      IList<string> colNames = GetColumnNames(hh);//按照屬性順序的列名集合
      List<T> list = new List<T>();
      T model
      = default(T);
      foreach (DataRow dr in dt.Rows)
      {
      model
      = new T();//創建實體
      int i = 0;
      foreach (PropertyInfo p in properties)
      {
      if (p.PropertyType == typeof(string))
      {
      p.SetValue(model, dr[colNames[i
      ++]], null);
      }
      else if (p.PropertyType == typeof(int))
      {
      p.SetValue(model,
      int.Parse(dr[colNames[i++]].ToString()), null);
      }
      else if (p.PropertyType == typeof(DateTime))
      {
      p.SetValue(model, DateTime.Parse(dr[colNames[i
      ++]].ToString()), null);
      }
      else if (p.PropertyType == typeof(float))
      {
      p.SetValue(model,
      float.Parse(dr[colNames[i++]].ToString()), null);
      }
      else if (p.PropertyType == typeof(double))
      {
      p.SetValue(model,
      double.Parse(dr[colNames[i++]].ToString()), null);
      }
      }

      list.Add(model);
      }

      return list;
      }

      /// <summary>
      /// 按照屬性順序的列名集合
      /// </summary>
      private IList<string> GetColumnNames(Hashtable hh)
      {
      PropertyInfo[] properties
      = typeof(T).GetProperties();//獲取實體類型的屬性集合
      IList<string> ilist = new List<string>();
      int i = 0;
      foreach (PropertyInfo p in properties)
      {
      ilist.Add(GetKey(p.PropertyType.ToString()
      + i++, hh));
      }
      return ilist;
      }

      /// <summary>
      /// 根據Value查找Key
      /// </summary>
      private string GetKey(string val, Hashtable tb)
      {
      foreach (DictionaryEntry de in tb)
      {
      if (de.Value.ToString() == val)
      {
      return de.Key.ToString();
      }
      }
      return null;
      }

      }
      }








      namespace TBToListTest
      {

      //實體
      public class Person
      {
      public int ID
      {
      set;
      get;
      }

      public string Name
      {
      set;
      get;
      }

      public string Age
      {
      set;
      get;
      }

      public string Lover
      {
      set;
      get;
      }

      }
      }




      using System;
      using System.Data;

      namespace TBToListTest
      {
      class Program
      {
      static void Main(string[] args)
      {
      TBToList
      <Person> tol = new TBToList<Person>();
      Console.WriteLine();
      DataTable dt
      = GetTable();
      tol.ToList(dt);
      Console.Read();
      }

      public static DataTable GetTable()
      {
      DataTable dt
      = new DataTable();
      dt.Columns.Add(
      "ID");
      dt.Columns.Add(
      "Age");
      dt.Columns.Add(
      "Lover");
      dt.Columns.Add(
      "Name");
      DataRow dr
      = dt.NewRow();
      dr[
      "ID"] = 1;
      dr[
      "Age"] = "Age1";
      dr[
      "Lover"] = "Lover1";
      dr[
      "Name"] = "Name1";
      dt.Rows.Add(dr);
      DataRow dr1
      = dt.NewRow();
      dr1[
      "ID"] = 2;
      dr1[
      "Age"] = "Age2";
      dr1[
      "Lover"] = "Lover2";
      dr1[
      "Name"] = "Name2";
      dt.Rows.Add(dr1);
      return dt;
      }
      }
      }
      posted @ 2011-05-09 18:40  古文觀芷  閱讀(15268)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 国产91精品一区二区麻豆| 欧洲中文字幕一区二区| 久久成人国产精品免费软件 | 国产成人高清精品亚洲| 亚洲精品一区二区三区在线观看| 4虎四虎永久在线精品免费| 精品国产一区二区三区国产区 | 国产精品丝袜一区二区三区 | 蜜桃视频一区二区在线观看| 婷婷五月综合激情| 国产欧美日韩亚洲一区二区三区| 麻豆亚州无矿码专区视频| 国产91小视频在线观看| japanese边做边乳喷| 日韩一区二区三区女优丝袜| 欧美日本中文| 日韩av日韩av在线| 国产精品美女www爽爽爽视频| 国产麻豆精品久久一二三| 久久99精品久久久久久9| 亚洲精品www久久久久久| 中文字幕成人精品久久不卡| 少妇被粗大的猛烈xx动态图| 九九热精品视频在线免费| 国产精品剧情亚洲二区| 精品国产一区二区三区四区| 国产精品自拍视频第一页| 亚洲国产色一区二区三区| 中文字幕日韩精品有码| 妺妺窝人体色www聚色窝仙踪| 亚洲十八禁一区二区三区| 婷婷色综合成人成人网小说 | 狠狠躁天天躁中文字幕无码| 一区二区传媒有限公司| 2019国产精品青青草原| 亚洲av无码一区二区三区网站| 国产一区二区在线影院| 乱老年女人伦免费视频| 国产一级片内射在线视频| 男人进女人下部全黄大色视频| 2021国产成人精品久久|