本文主要是介绍c# 将数据库中值一次赋给MODEL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/// <summary>
/// 将DataTable中的每一列赋值给model中的同名属性
/// DataTable中只有一行数据
/// </summary>
/// <typeparam name="T">泛型:model的类型</typeparam>
/// <param name="objmodel">model的实例</param>
/// <param name="dtInfo">DataTable表</param>
public static void TableToModel<T>(T objmodel, DataTable dtInfo)
{
//获取model的类型
Type modelType = typeof(T);
//获取model中的属性
PropertyInfo[] modelpropertys = modelType.GetProperties();
//遍历DataTable的每一列
for (Int32 i = 0; i < dtInfo.Columns.Count; i++)
{
//遍历model的每一个属性
foreach (PropertyInfo pi in modelpropertys)
{
String name = pi.Name; //获取属性名称
//若model属性名称与表中的列名相同
if (name == dtInfo.Columns[i].ColumnName)
{
object value = null ;
//获取表中该列对应的数据
if (dtInfo.Columns[i].DataType == typeof(string))
{
if (dtInfo.Rows[0][i] == System.DBNull.Value)
value = Convert.ToString(null);
else
value = dtInfo.Rows[0][i].ToString();
}
//判断是否为bool类型
if (dtInfo.Columns[i].DataType == typeof(bool))
{
if (dtInfo.Rows[0][i] == System.DBNull.Value)
value = Convert.ToBoolean(null);
else
value = Convert.ToBoolean(dtInfo.Rows[0][i]);
}
//判断是否为DateTime类型
else if (dtInfo.Columns[i].DataType == typeof(DateTime) )
{
if (dtInfo.Rows[0][i] == System.DBNull.Value)
value = Convert.ToDateTime(null);
else
value = Convert.ToDateTime(dtInfo.Rows[0][i]);
}
//判断是否为int类型
else if (dtInfo.Columns[i].DataType == typeof(int) )
{
if (dtInfo.Rows[0][i] == System.DBNull.Value)
value = Convert.ToInt32(null);
else
value = Convert.ToInt32(dtInfo.Rows[0][i]);
}
//判断是否为float类型
else if (dtInfo.Columns[i].DataType == typeof(Double) )
{
if (dtInfo.Rows[0][i] == System.DBNull.Value)
value = Convert.ToDouble(null);
//value = float.Parse(null);
else
value = Convert.ToDouble(dtInfo.Rows[0][i]);
//value = float.Parse(dtInfo.Rows[0][i].ToString());
}
//将表中该列下的数据赋值给model中的同名属性
modelType.GetProperty(name).SetValue(objmodel, value, null);
}
}
}
}
调用方法TableToModel<Recurrencecs>(Conf.currentPatient.recurrencecs, dtrecurrencecs);
这篇关于c# 将数据库中值一次赋给MODEL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!