可以将反射属性链接到变量吗?只是为了更好的代码。
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)
干杯
答案 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语句。