C# DataTable转换实体类List
程序员文章站
2022-06-15 09:50:28
...
通常在开发中处理DataTable往往会比较繁琐,但是如果是实体类List会相对简单得多。下面是C#中DataTable转List的一种方法:
1、实体转换辅助类
/// <summary>
/// 实体转换辅助类
/// </summary>
public class ModelConvertHelper<T> where T : new() {
public static IList<T> ConvertToModel(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; // 检查DataTable是否包含此列
if (dt.Columns.Contains(tempName)) {
// 判断此属性是否有Setter
if (!pi.CanWrite)
continue;
Type piType = pi.PropertyType;
object value = dr[tempName];
if (value != DBNull.Value)
if (value.GetType() == piType) {
pi.SetValue(t , value , null);
}
else if (piType == typeof(DateTime?)) {
pi.SetValue(t , value , null);
}
else if (piType == typeof(int?)) {
pi.SetValue(t , value , null);
}
else if (piType == typeof(decimal?)) {
pi.SetValue(t , value , null);
}
else if (piType == typeof(decimal))
{
pi.SetValue(t, value.ToDecimal(), null);
}
}
}
ts.Add(t);
}
return ts;
}
}
2、使用方法
public class student
{
/// <summary>
/// id
/// </summary>
public int id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string name { get; set; }
}
//这里对DataTable初始化
DataTable dt = new DataTable();
if (dt != null && dt.Rows.Count > 0)
{
return ModelConvertHelper<student>.ConvertToModel(dt).ToList();
}
上一篇: 利用反射将实体类对象转成Map
下一篇: map转成对象
推荐阅读
-
c#中利用委托反射将DataTable转换为实体集的代码
-
C#实现实体类与字符串互相转换的方法
-
C#中List〈string〉和string[]数组之间的相互转换
-
C#实现实体类和XML相互转换
-
C#实现XML与实体类之间相互转换的方法(序列化与反序列化)
-
c#中利用委托反射将DataTable转换为实体集的代码
-
C# List与Dictionary相互转换与高效查找
-
C# convert json to datatable,convert list to datatable
-
C#实现DataTable,List和Json转换的方法
-
【转载】C#中ToArray方法将List集合转换为对应的数组