您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

2026-03-31 09:091阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计401个文字,预计阅读时间需要2分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

将伪原创内容简化改写如下:

plaintext将DataTable转换为List的类定义:public class TableToListConverter where T : class, new(){ public static IList TableToList(DataTable dt) { IList ts=new List(); // 定义集合类型 }

一、DataTable转换到List<T>

/// <summary> /// TableToList /// </summary> public class TableListConverter<T> where T : class, new() { public static IList<T> TableToList(DataTable dt) { IList<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))// 检查DataTable是否包含此列 { if (!pi.CanWrite) continue;// 判断此属性是否有Setter object value = dr[tempName]; if (value != DBNull.Value) pi.SetValue(t, value, null); } } ts.Add(t); } return ts; } }

应用:

// 获得查询结果 DataTable dt = DbHelper.ExecuteDataTable("..."); // 把DataTable转换为IList<UserInfo> IList<UserInfo> users = TableListConverter<UserInfo>.TableToList(dt);

二、List<T>转换到DataTable

/// <summary> /// ListToTable /// </summary> public class TableListConverter { public static DataTable ListToTable<T>(IList<T> list) where T : class, new() { if (list == null) return null; Type type = typeof(T); DataTable dt = new DataTable(); PropertyInfo[] properties = Array.FindAll(type.GetProperties(), p => p.CanRead);//判断此属性是否有Getter Array.ForEach(properties, prop => { dt.Columns.Add(prop.Name, prop.PropertyType); });//添加到列 foreach (T t in list) { DataRow row = dt.NewRow(); Array.ForEach(properties, prop => { row[prop.Name] = prop.GetValue(t, null); });//添加到行 dt.Rows.Add(row); } return dt; } }

应用:

//IList<UserInfo> users DataTable dt =TableListConverter.ListToTable(users)

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

到此这篇关于C#中泛型举例List<T>与DataTable相互转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计401个文字,预计阅读时间需要2分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

将伪原创内容简化改写如下:

plaintext将DataTable转换为List的类定义:public class TableToListConverter where T : class, new(){ public static IList TableToList(DataTable dt) { IList ts=new List(); // 定义集合类型 }

一、DataTable转换到List<T>

/// <summary> /// TableToList /// </summary> public class TableListConverter<T> where T : class, new() { public static IList<T> TableToList(DataTable dt) { IList<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))// 检查DataTable是否包含此列 { if (!pi.CanWrite) continue;// 判断此属性是否有Setter object value = dr[tempName]; if (value != DBNull.Value) pi.SetValue(t, value, null); } } ts.Add(t); } return ts; } }

应用:

// 获得查询结果 DataTable dt = DbHelper.ExecuteDataTable("..."); // 把DataTable转换为IList<UserInfo> IList<UserInfo> users = TableListConverter<UserInfo>.TableToList(dt);

二、List<T>转换到DataTable

/// <summary> /// ListToTable /// </summary> public class TableListConverter { public static DataTable ListToTable<T>(IList<T> list) where T : class, new() { if (list == null) return null; Type type = typeof(T); DataTable dt = new DataTable(); PropertyInfo[] properties = Array.FindAll(type.GetProperties(), p => p.CanRead);//判断此属性是否有Getter Array.ForEach(properties, prop => { dt.Columns.Add(prop.Name, prop.PropertyType); });//添加到列 foreach (T t in list) { DataRow row = dt.NewRow(); Array.ForEach(properties, prop => { row[prop.Name] = prop.GetValue(t, null); });//添加到行 dt.Rows.Add(row); } return dt; } }

应用:

//IList<UserInfo> users DataTable dt =TableListConverter.ListToTable(users)

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

到此这篇关于C#中泛型举例List<T>与DataTable相互转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。