LINQ新手在这里
我试图获取字段的值 - 使用fieldName变量。 如果我在行[FieldName]上进行监视,我会得到一个值 - 但是当我在实际代码上执行它时,它将无法编译。
string fieldName = "awx_name"
List<awx_property> propertyQry =
(
from property in crm.awx_propertyawx_properties
where property.awx_propertyid == new Guid(id)
select property
).ToList();
foreach (awx_property row in propertyQry)
{
//THIS DOES NOT WORK
fieldValue = row[fieldName];
}
提前致谢。也欢迎替代品
答案 0 :(得分:1)
你让我们猜测你在这里要做什么......你需要指定对象的类型,这样我们就可以很容易地理解和帮助了。无论如何,我认为您正在尝试根据ID获取对象。由于您是通过Id获得的,我的猜测是返回值是单个对象。
var propertyObj =( from property in crm.awx_propertyawx_properties
where property.awx_propertyid == new Guid(id)
select property
).SingleOrDefault();
if(propertyObj != null) {
fieldValue = propertyObj.GetType().GetProperty(fieldName).GetValue(propertyObj, null);
}
当然,您需要添加验证以确保在访问属性值时不会出现null或任何其他错误。
希望它有所帮助。
答案 1 :(得分:0)
fieldValue是什么类型的? awx_property是什么样的?这只会起作用,awx_property是一个键/值集合。它不是,你可以使用反射。
如果是键/值集合,您可能错过了演员表。 (row [FieldName] .ToString()或者其他)你也在foreach块中缺少一个分号。