LINQ查询结果 - 从字段名称变量动态获取字段值

时间:2011-06-17 16:22:06

标签: linq linq-to-objects

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];   
}

提前致谢。也欢迎替代品

2 个答案:

答案 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块中缺少一个分号。