zoukankan      html  css  js  c++  java
  • C# List和DataTable的相互转换

    1、List转DataTable

     /// <summary>
     /// list to datatable
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="collection"></param>
     /// <returns></returns>
     public  DataTable  ListToDt<T>(IEnumerable<T> collection)
     {
         var props = typeof(T).GetProperties();
         var dt = new DataTable();
         dt.Columns.AddRange(props.Select(p => new 
         DataColumn(p.Name, p.PropertyType)).ToArray());
         if (collection.Count() > 0)
         {
             for (int i = 0; i < collection.Count(); i++)
             {
                 ArrayList tempList = new ArrayList();
                 foreach (PropertyInfo pi in props)
                 {
                     object obj = pi.GetValue(collection.ElementAt(i), null);
                     tempList.Add(obj);
                 }
                 object[] array = tempList.ToArray();
                 dt.LoadDataRow(array, true);
              }
          }
          return dt;
     }

    2、DataTable转List

    public class DtToList<T> where T : new()  
    {
         /// <summary>
         /// datatable to list
         /// </summary>
         /// <param name="dt"></param>
         /// <returns></returns>
         public static  List<T> ConvertToModel(DataTable dt)
         {
    
             List<T> ts = new List<T>();// 定义集合
             Type type = typeof(T); // 获得此模型的类型
             string tempName = "";
             foreach (DataRow dr in dt.Rows)
             {
                 T t = new T();
                 PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
                 foreach (PropertyInfo pi in propertys)
                 {
                     tempName = pi.Name;
                     if (dt.Columns.Contains(tempName))
                     {
                         if (!pi.CanWrite) continue;
                         object value = dr[tempName];
                         if (value != DBNull.Value)
                            pi.SetValue(t, value, null);
                     }
                 }
                 ts.Add(t);
             }
             return ts;
         }
    }
  • 相关阅读:
    如何用kaldi做孤立词识别三
    如何用kaldi做孤立词识别二
    脚本注释3
    [转] kaldi中FST的可视化-以yesno为例
    如何用kaldi做孤立词识别-初版
    [转]语言模型训练工具SRILM
    [转]kaldi 神经网络
    [转]kaldi ASR: DNN训练
    [转]Kaldi命令词识别
    [转] 如何用kaldi训练好的模型做特定任务的在线识别
  • 原文地址:https://www.cnblogs.com/ElvisZhongShao/p/11002006.html
Copyright © 2011-2022 走看看