将反射属性链接到变量

时间:2014-04-08 15:36:24

标签: c# linq reflection

可以将反射属性链接到变量吗?只是为了更好的代码。

var xxx = results.Where(r => r.GetType().GetProperty(levelName).GetValue(r, null) == node.Name)

可以转换成类似的东西吗?

var myReflectedProp = r.GetType().GetProperty(levelName).GetValue(r, null);
var myReflectedProp2 = r.GetType().GetProperty(levelName2).GetValue(r, null);
var xxx = results.Where(r => myReflectedProp && r => myReflectedProp2)

干杯

1 个答案:

答案 0 :(得分:1)

是的,如果你只是手动创建表达式树就可以了。

var myReflectedPropParameter = Expression.Parameter(typeof(YourType));
var myReflectedProp = Expression.Lambda<Func<YourType, bool>>
    (Expression.MakeMemberAccess(myReflectedPropParameter, typeof(YourType).GetProperty(levelName)), myReflectedPropParameter);
var xxx = results.Where(myReflectedProp);

当然,您需要向System.Linq.Expressions添加using语句。