首页 > 解决方案 > 如何使用 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);
}

但这给了我错误“对象与目标类型不匹配”。

希望有人能帮忙!

提前致谢

标签: c#linqloopsforeachproperties

解决方案


很清楚如果你打破它会发生什么。您将错误的参数传递给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;

推荐阅读