Leo*_*rdo 1 c# linq lambda entity-framework entity-framework-6
我需要将以下C#代码转换为有效的Entity Framework 6表达式:
(f => f.GetType().GetProperty(stringParamter).GetValue(f).ToString() == anotherStringParameter)
Run Code Online (Sandbox Code Playgroud)
这个人为"Order By"部分做了这件事,但我似乎无法弄清楚"哪里"部分......
一般来说,我想在这里实现的是一种动态查询形式,用户将"选择"属性在"dropbox"中过滤,提供过滤器值和命中查询...通常人们喜欢,f => f.TargetProp == userValue但我可以'当我不知道它是哪一个时,这样做...
您需要构造表示对属性的访问的表达式树:
public static Expression<Func<T, bool>> PropertyEquals<T>(
string propertyName, string valueToCompare)
{
var param = Expression.Parameter(typeof(T));
var body = Expression.Equal(Expression.Property(param, propertyName)
, Expression.Constant(valueToCompare));
return Expression.Lambda<Func<T, bool>>(body, param);
}
Run Code Online (Sandbox Code Playgroud)
这允许你写:
query = query.Where(PropertyEquals<EntityType>(stringParameter, anotherString));
Run Code Online (Sandbox Code Playgroud)