博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TList To DataTable
阅读量:6995 次
发布时间:2019-06-27

本文共 4298 字,大约阅读时间需要 14 分钟。

using System;   using System.Collections.Generic;  using System.Linq;  using System.Text;   using System.Data;   using System.Collections;  using System.Reflection;   namespace DatableToList  {      class ConvertHelper
where T : new() { ///
/// 利用反射和泛型 /// ///
///
public static List
ConvertToList(DataTable dt) { // 定义集合 List
ts = new List
(); // 获得此模型的类型 Type type = typeof(T); //定义一个临时变量 string tempName = string.Empty; //遍历DataTable中所有的数据行 foreach (DataRow dr in dt.Rows) { T t = new T(); // 获得此模型的公共属性 PropertyInfo[] propertys = t.GetType().GetProperties(); //遍历该对象的所有属性 foreach (PropertyInfo pi in propertys) { tempName = pi.Name;//将属性名称赋值给临时变量 //检查DataTable是否包含此列(列名==对象的属性名) if (dt.Columns.Contains(tempName)) { // 判断此属性是否有Setter if (!pi.CanWrite) continue;//该属性不可写,直接跳出 //取值 object value = dr[tempName]; //如果非空,则赋给对象的属性 if (value != DBNull.Value) pi.SetValue(t, value, null); } } //对象添加到泛型集合中 ts.Add(t); } return ts; } } }
///         /// 将集合类转换成DataTable        ///         /// 集合        /// 
public static DataTable ToDataTable(IList list) { DataTable result = new DataTable(); if (list.Count > 0) { PropertyInfo[] propertys = list[0].GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { result.Columns.Add(pi.Name, pi.PropertyType); } for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } object[] array = tempList.ToArray(); result.LoadDataRow(array, true); } } return result; } /// /// 将泛型集合类转换成DataTable /// ///
集合项类型
/// 集合 ///
数据集(表)
public static DataTable ToDataTable
(IList
list) { return ConvertX.ToDataTable
(list, null); } ///
/// 将泛型集合类转换成DataTable /// ///
集合项类型
///
集合 ///
需要返回的列的列名 ///
数据集(表)
public static DataTable ToDataTable
(IList
list, params string[] propertyName) { List
propertyNameList = new List
(); if (propertyName != null) propertyNameList.AddRange(propertyName); DataTable result = new DataTable(); if (list.Count > 0) { PropertyInfo[] propertys = list[0].GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (propertyNameList.Count == 0) { result.Columns.Add(pi.Name, pi.PropertyType); } else { if (propertyNameList.Contains(pi.Name)) result.Columns.Add(pi.Name, pi.PropertyType); } } for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { if (propertyNameList.Count == 0) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } else { if (propertyNameList.Contains(pi.Name)) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } } } object[] array = tempList.ToArray(); result.LoadDataRow(array, true); } } return result; }

 

转载于:https://www.cnblogs.com/hausthy/p/3979205.html

你可能感兴趣的文章