【发布时间】:2018-02-23 18:25:45
【问题描述】:
我也有类似的情况:How to declare a Linq Expression variable in order to have it processed as a dbParameter
但就我而言,不想与“等于”运算符进行比较,我需要将一个字符串与另一个字符串进行比较。我怎样才能做到这一点?
我尝试过这样的事情:
var comparsionString = "aaa";
ParameterExpression param = Expression.Parameter(typeof(ItemSearch), "s");
Expression prop = Expression.Property(param, "Id");
Expression<Func<string>> idLambda = () => comparsionString;
Expression searchExpr = Expression.GreaterThanOrEqual(prop, idLambda.Body);
Expression<Func<ItemSearch, bool>> myLambda =
Expression.Lambda<Func<ItemSearch, bool>>(searchExpr, param);
但不幸的是,字符串不支持 GreaterThanOrEqual。所以我需要至少由 SQL to Entities 支持的 string.CompareTo(..) 方法。
说:
Expression searchExpr = Expression.IsTrue(*prop*.CompareTo(*idLambda*) >= 0);
如何以编译器可以理解的方式编写?
感谢任何帮助。 谢谢!
【问题讨论】:
-
这个答案有帮助吗? stackoverflow.com/a/24890249/4222487
-
您可以使用 LINQPad 将您初始化的
Expression变量输出为类似于所需输出的内容,然后编写代码重新创建它。idLambda很好用,但Expression.Constant可能更好。
标签: c# linq lambda linq-expressions