C#中DataTable和List互转的示例代码
短信预约 -IT技能 免费直播动态提醒
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
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;
}
}
2. 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;
}
到此这篇关于C#中DataTable和List互转的示例代码的文章就介绍到这了,更多相关C# DataTable和List互转内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341