我正在尝试使用this example将表字段名称动态传递给查询,并避免对每个表字段重复进行频繁的查询操作。
示例中包含并根据需要进行编辑的代码如下:
localPlayer
它适用于数字字段,因为它在Expression<Func<T, bool>> GreatherThan<T>(string field, string value)
{
ParameterExpression B = Expression.Parameter(typeof(T));
return Expression.Lambda<Func<T, bool>>(
Expression.GreaterThan(
Expression.PropertyOrField(B, field),
Expression.Constant(value)),
B);
}
下具有我需要的数字字段的每个操作(等于,不等于,大于/小于等)。
但是似乎没有对字符串进行任何操作,例如Expression
或类似的字符串。(当然是Contains
和Equal
除外。< / em>)
如何实现以下目标? (目前在语法上是错误的,但这只是出于示例目的)
NotEqual
答案 0 :(得分:1)
您必须在字符串对象上调用方法:
var s = Expression.Parameter(typeof(string), "s");
var term = Expression.Parameter(typeof(string), "term");
var contains = Expression.Call(s, typeof(string).GetMethod("Contains"), term);
Func<string, string, bool> lambda = Expression.Lambda<Func<string,string,bool>>(contains, s, term).Compile();
Console.WriteLine(lambda("test", "e")); //True