C# 用于将一个DataTable转换为Users对象的列表

1:第一种例子:

/// <summary>

/// 用户名循环赋值

/// </summary>

/// <param name="dt"></param>

/// <returns></returns>

public List<Users> FenPeiFillModelUsers(DataTable dt)

{

if (dt.Rows.Count == 0 || dt == null)

{

return null;

}

List<Users> Users = new List<Users>();

foreach (DataRow dr in dt.Rows)

{

Users beiBu = new Users();

for (int i = 0; i < dr.Table.Columns.Count; i++)

{

PropertyInfo info = beiBu.GetType().GetProperty(dr.Table.Columnsi.ColumnName);

if (info != null && dri != DBNull.Value)

{

info.SetValue(beiBu, dri, null);

}

}

Users.Add(beiBu);

}

return Users;

}

2: 第二种万能的方法,使用了泛型方法

/// <summary>

/// DataTable转List

/// </summary>

/// <typeparam name="T"></typeparam>

/// <param name="dataTable"></param>

/// <returns></returns>

private List<T> FillModel<T>(DataTable dataTable) where T : new()

{

if (dataTable == null || dataTable.Rows.Count == 0)

{

return null;

}

var dataList = new List<T>();

foreach (DataRow row in dataTable.Rows)

{

var dataItem = new T();

foreach (DataColumn column in dataTable.Columns)

{

var property = typeof(T).GetProperty(column.ColumnName);

if (property != null && rowcolumn != DBNull.Value)

{

property.SetValue(dataItem, Convert.ChangeType(rowcolumn, property.PropertyType));

}

}

dataList.Add(dataItem);

}

return dataList;

}

相关推荐
唐青枫4 小时前
对象到底住在哪里?C#.NET 托管堆从分配、GC 到内存排查
c#·.net
fogota5 小时前
Emoji与Segoe MDL2 Assets的比较
c#·wpf
灸木7 小时前
C# 多线程与异步
c#
鱼听禅10 小时前
C# 学习笔记-使用 类型化客户端搭建HTTP客户端服务
学习·http·c#·工厂方法模式
geovindu12 小时前
CSharp:Condition Variable Pattern
后端·设计模式·c#·.net·.netcore·条件变量模式·同步型模式
淡海水13 小时前
11-03-Unity-List-T-和Dictionary-TKey-TValue-的性能调优实战
算法·unity·c#·list·dictionary
fogota14 小时前
C# 如何调用系统图标
c#·.net
△曉風殘月〆14 小时前
.NET是什么?为什么要选择.NET?
c#·.net·.net core·clr
fogota14 小时前
C# WPF 按钮加载字体图标 / 动物头像
c#·.net·wpf
fogota14 小时前
C# WPF 按钮加载系统图标 / 动物头像
c#·.net·wpf