C# 如何使用LINQ/反射获取DataRow(未知)对象中特定属性的值?

C# 如何使用LINQ/反射获取DataRow(未知)对象中特定属性的值?,c#,linq,loops,foreach,properties,C#,Linq,Loops,Foreach,Properties,如何在变量的RowData属性中获取特定行?我正试图获得“身份证”。到目前为止,我尝试的是LINQ或者只是一个常规的foreach循环,但是我只能访问GetType().GetProperties()。通过这些方法,我无法访问“Id”的值 到目前为止,我所尝试的: 我尝试过这样使用反射: public void CommandClickHandler(CommandClickEventArgs<object> args) { TabObj.Select(2); va

如何在变量的RowData属性中获取特定行?我正试图获得“身份证”。到目前为止,我尝试的是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);
}
public void CommandClickHandler(CommandClickEventArgs args args)
{
TabObj.选择(2);
var IdOfModel=args.RowData.GetType().GetProperties().Single(pi=>pi.Name==“Id”).GetValue(args,null);
}
但这给了我一个错误“对象与目标类型不匹配”

希望有人能帮忙


提前谢谢

如果你把它拆开,事情就很清楚了。您将错误的参数传递给
PropertyInfo.GetValue(对象,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;

test.RowData.Id?.test.RowData.Id@romaryzhiy他不能,因为RowData的类型是prolly
object
…这是正确的,如果我使用test.RowData.Id,我会得到以下结果:GetType(),ToString()。GetHashCode()改为使用
Grid
使用
Grid
,这样你就可以像Roman写的那样使用它(因为那时
CommandClickEventArgs
将变成
CommandClickEventArgs
,我想,但它应该在文档中说明)我不能这样做,因为页面是动态构建的。必须能够以某种方式访问Id的值,对吗?