写了一个方法:用实体类obEntity的属性值赋给DataRow相同名字的行字段,但是出错,知道错出在哪里,但是不知道怎么改过来(刚开始学反射),哪位帮忙看看,改一改,深更半夜继续等...
不甚感激,临表涕零~~~~ public static DataRow fillDataRowWithEntity(DataRow dr, Object obEntity)
{
DataTable dt = dr.Table;
Type tpEntity = obEntity.GetType();
System.Reflection.PropertyInfo[] pis = tpEntity.GetProperties();
foreach (DataColumn dc in dt.Columns)
{
foreach (System.Reflection.PropertyInfo pi in pis)
{
if (dc.ColumnName == pi.Name && (dc.DataType.Name == pi.PropertyType.Name))
{
dr[dc.ColumnName] = pi.GetValue(tpEntity, null); //该行出错,提示
}
}
}
return dr;
}
不甚感激,临表涕零~~~~ public static DataRow fillDataRowWithEntity(DataRow dr, Object obEntity)
{
DataTable dt = dr.Table;
Type tpEntity = obEntity.GetType();
System.Reflection.PropertyInfo[] pis = tpEntity.GetProperties();
foreach (DataColumn dc in dt.Columns)
{
foreach (System.Reflection.PropertyInfo pi in pis)
{
if (dc.ColumnName == pi.Name && (dc.DataType.Name == pi.PropertyType.Name))
{
dr[dc.ColumnName] = pi.GetValue(tpEntity, null); //该行出错,提示
}
}
}
return dr;
}
解决方案 »
- c#正则,根据name获取input的value值
- 配置设置 文件 用vs 怎么生成?
- 从listview把数据拖拽到datagridview
- 请教一下c#如何读取用空格分开的字符串的文件
- 求一道算法题
- VS2008编译的在没有VS2008的情况下怎么部署到IIS中?
- 急求水晶报表直打印的遗漏问题(.net2005 版)
- 无法将System.Data.SqlClient. SqlParameter 隐式转换为“string”,怎么办啊?
- 思归,孟子等大侠们请过来帮忙,已经两天了没解决了。
- 怎么将一个STRING里所有的一对<>中的东西全部删除?包括<>
- 删除如果超过该行指定长度,则删除
- 0x0 图片问题
// 摘要:
// 用索引化属性 (Property) 的可选索引值返回该属性 (Property) 的值。
// 参数:
// obj: 将返回其属性值的对象。
//
// index:索引化属性的可选索引值。对于非索引化属性 (Property),此值应为null。
//
// 返回结果:obj 参数的属性 (Property) 值。
[DebuggerStepThrough]
[DebuggerHidden] public virtual object GetValue(object obj, object[] index);那么obj应该是属性pi对应的对象tpEntity啊,为什么会提示:对象与目标类型不匹配呢?
你看我加的条件: if (dc.ColumnName == pi.Name && (dc.DataType.Name == pi.PropertyType.Name)) 类型已经是一样才会执行到里面去.
我debug调试的时候,监视 "pi.GetValue(tpEntity, null)"时就已经抛了异常了
应该是这样的 刚才没注意看
这里得到的是什么啊?
dr[dc.ColumnName] 能是一样的类型吗?
好好设置断点调试一下