c# - 如何使用 LINQ / Reflection 获取 DataRow(未知)对象中特定属性的值?
问题描述
如何获取变量的 RowData 属性中的特定行?我正在尝试获取“Id”。到目前为止,我尝试过的是 LINQ 或常规的 foreach 循环,但是我只能访问 GetType().GetProperties()。通过这些方法,我无法访问“Id”的值。
到目前为止我已经尝试过:
我试过使用这样的反射:
public void CommandClickHandler(CommandClickEventArgs<object> args)
{
TabObj.Select(2);
var IdOfModel = args.RowData.GetType().GetProperties().Single(pi => pi.Name == "Id").GetValue(args, null);
}
但这给了我错误“对象与目标类型不匹配”。
希望有人能帮忙!
提前致谢
解决方案
很清楚如果你打破它会发生什么。您将错误的参数传递给PropertyInfo.GetValue(object,arg[])
,它应该是:
var obj = args.RowData;
var type = obj.GetType();
var IdOfModel = type.GetProperties().Single(pi => pi.Name == "Id").GetValue(obj, null);
或者干脆
dynamic obj = args.RowData;
var IdOfModel = obj.Id;
推荐阅读
- javascript - 噩梦 - 我无法捕捉到哪一行代码给了我两个或多个 .wait() 的错误
- jquery - 如何让整页滚动更直观
- android - android开发中的新手如何解决这个问题?
- html - 使用 Angular 时应该使用什么样的表单验证?
- scala - Scala - 基于条件的分组和排序
- java - Android - An algorithm to check recursively if a map is solvable
- php - Magento 2 将自定义字体添加到电子邮件模板
- c# - 递归创建 XML 树父命名空间时丢失
- angular - ng2-smart-table 中的复选框
- amazon-redshift - 如何在框架子句redshift window_functions中将列字段指定为偏移量?