.net 数据源DataSet 转换成模型
/// <summary>
/// DataSet转换成model 自动赋值返回集合
/// </summary>
/// <typeparam name="T">模型类型</typeparam>
/// <param name="dataList">传入数据DataSet数据源</param>
/// <param name="obj">传入模型</param>
/// <returns></returns>
public List<T> DataSetBindList<T>(DataSet dataList,T obj) where T : new()
{
//创建一个泛型
List<T> lists = new List<T>();
//遍历DataSet数据源
foreach (DataRow item in dataList.Tables[0].Rows)
{
//将赋值的模型添加到集合里面
lists.Add(assignmentClass(new T(), item));
}
return lists;
}
/// <summary>
/// DataSet转换成model 自动赋值返回模型
/// </summary>
/// <typeparam name="T">模型类型</typeparam>
/// <param name="dataList">传入数据DataSet数据源</param>
/// <param name="obj">传入模型</param>
/// <returns></returns>
public T DataSetBindClass<T>(DataSet dataList, T obj) where T : new()
{
//创建一个模型
T model = new T();
//遍历数据源
foreach (DataRow item in dataList.Tables[0].Rows)
{
//将数据添加到模型里面
model = assignmentClass(new T(), item);
}
return model;
}
/// <summary>
/// 抽象出赋值部分
/// </summary>
/// <typeparam name="T">模型类型</typeparam>
/// <param name="obj">传入模型</param>
/// <param name="item">传入数据DataRow数据源</param>
/// <returns></returns>
public T assignmentClass<T>(T obj, DataRow item) where T : new()
{
//先判断模型是不是等于空
if (obj==null)
{
//等于空创建一个
obj = new T();
}
//获取模型的类型
Type type = obj.GetType(); //得到类型
PropertyInfo[] properts = type.GetProperties(); //得到类型的所有属性,也就是表对应的实体模型的所有属性
//遍历PropertyInfo
foreach (PropertyInfo propertyInfo in properts)
{
//判断数据是否存在
int index = item.Table.Columns.IndexOf(propertyInfo.Name);
if (index != -1)
{
//判断数据源的数据不能为空
if (item[propertyInfo.Name] != null && item[propertyInfo.Name] != DBNull.Value)
{
//给obj赋值
propertyInfo.SetValue(obj, Convert.ChangeType(item[propertyInfo.Name], propertyInfo.PropertyType), null);
}
}
}
return obj;
}
作者:匿名
出处:https://www.cnblogs.com/chenxi001/p/11668210.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现