C#中DataTable和List互转怎么实现

其他教程   发布日期:前天 06:54   浏览次数:100

今天小编给大家分享一下C#中DataTable和List互转怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

DataTable

DataTable 是 C# 中常用的一种数据表格类型,它类似于数据库中的表格,可以用来存储和处理数据。DataTable 中的数据可以通过行和列来访问和操作,每行代表一个数据项,每列代表一个属性。

以下是一些 DataTable 的常用属性和方法:

  • Columns:列集合。

  • Rows:行集合。

  • NewRow():创建一个新的 DataRow 对象。

  • Load(DataReader):从一个 DataReader 对象中加载数据到 DataTable。

  • Select(filterExpression, sortExpression):根据指定的筛选条件和排序条件返回满足条件的行集合。

  • Merge(DataTable):合并两个 DataTable,返回一个新的 DataTable。

List

List 是 C# 中常用的一种动态数组类型,它可以用来存储任何类型的数据,可以动态增加或删除元素。List 中的元素可以通过索引来访问和操作。

以下是一些 List 的常用属性和方法:

  • Count:元素数量。

  • Add(item):添加一个元素到 List 的末尾。

  • Insert(index, item):在指定的位置插入一个元素。

  • Remove(item):从 List 中删除一个元素。

  • RemoveAt(index):删除指定位置的元素。

  • Contains(item):判断 List 中是否包含指定的元素。

1. DataTable转List

  1. public class DtToList<T> where T : new()
  2. {
  3. /// <summary>
  4. /// datatable to list
  5. /// </summary>
  6. /// <param name="dt"></param>
  7. /// <returns></returns>
  8. public static List<T> ConvertToModel(DataTable dt)
  9. {
  10. List<T> ts = new List<T>();// 定义集合
  11. Type type = typeof(T); // 获得此模型的类型
  12. string tempName = "";
  13. foreach (DataRow dr in dt.Rows)
  14. {
  15. T t = new T();
  16. PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
  17. foreach (PropertyInfo pi in propertys)
  18. {
  19. tempName = pi.Name;
  20. if (dt.Columns.Contains(tempName))
  21. {
  22. if (!pi.CanWrite) continue;
  23. object value = dr[tempName];
  24. if (value != DBNull.Value)
  25. pi.SetValue(t, value, null);
  26. }
  27. }
  28. ts.Add(t);
  29. }
  30. return ts;
  31. }
  32. }

2. List转DataTable

  1. /// <summary>
  2. /// list to datatable
  3. /// </summary>
  4. /// <typeparam name="T"></typeparam>
  5. /// <param name="collection"></param>
  6. /// <returns></returns>
  7. public DataTable ListToDt<T>(IEnumerable<T> collection)
  8. {
  9. var props = typeof(T).GetProperties();
  10. var dt = new DataTable();
  11. dt.Columns.AddRange(props.Select(p => new
  12. DataColumn(p.Name, p.PropertyType)).ToArray());
  13. if (collection.Count() > 0)
  14. {
  15. for (int i = 0; i < collection.Count(); i++)
  16. {
  17. ArrayList tempList = new ArrayList();
  18. foreach (PropertyInfo pi in props)
  19. {
  20. object obj = pi.GetValue(collection.ElementAt(i), null);
  21. tempList.Add(obj);
  22. }
  23. object[] array = tempList.ToArray();
  24. dt.LoadDataRow(array, true);
  25. }
  26. }
  27. return dt;
  28. }

以上就是C#中DataTable和List互转怎么实现的详细内容,更多关于C#中DataTable和List互转怎么实现的资料请关注九品源码其它相关文章!