我在MSSQL数据库中有一个包含约300列的表,我想只提取一行并获取列的所有值。我已经使用过这段代码,但我遇到了GetValue(,)
方法的问题。这是我的代码:
private PropertyInfo[] GetValuesDB()
{
......
var result = from val in datacTx.TableA
where val.A == "AA" + "-" + "11" &&
val.B == "CC
select val;
return result.First().GetType().GetProperties();
}
...
public void MethodA()
{
var res = GetValuesDB();
foreach (var propertyInfo in res)
{
var rez = propertyInfo.GetValue(res,null);
}
}
我总是得到这种例外:
Object does not match target type.
答案 0 :(得分:3)
GetValue
期望第一个参数的类型是声明属性(或子类型)的类型。
因此,您的result.First()
调用会返回对象的引用 - 并且您希望获取该对象上的属性 ...因此应该是您传递给{{1 }}。您需要更改代码以返回该引用:
GetValue
所以// Ideally, change this to a more appropriate return type...
private object GetValuesDB()
{
......
var result = from val in datacTx.TableA
where val.A == "AA" + "-" + "11" &&
val.B == "CC"
select val;
return result.First();
}
...
public void MethodA()
{
var res = GetValuesDB();
foreach (var propertyInfo in res.GetType().GetProperties())
{
var rez = propertyInfo.GetValue(res, null);
}
}
现在返回对相关实体的引用 - 然后然后获取属性描述符,并向每个描述符询问该对象上该属性的值< / em>的