我正在使用动态Lambda表达式查询,而不使用API。
如果用户选择FieldName作为“AddressLine1”而运算符选择> = FieldValue作为“K” 它应该将结果返回为所有AddressLine1字段值,以K和L开头,M到Z系列。
以下是代码,适用于整数数据类型:
public static Expression CreateBinaryExpression(Expression argLeft, Expression argRight, operatorType opType) {
switch ((operatorType)opType) {
case operatorType.Greater:
return Expression.GreaterThan(argLeft, argRight);
case operatorType.GreaterEqual:
return Expression.GreaterThanOrEqual(argLeft, argRight);
...
}
}
如何修改代码以使用大于等于运算符的String数据类型。我正在为此寻找表达。有人有想法吗?
答案 0 :(得分:3)
您可以使用String.Compare()
方法:
return String.Compare(argLeft, argRight) >= 0;
Compare()
如果strA小于strB则返回< 0,当它们相等时返回0,如果strA大于strB则返回>
答案 1 :(得分:0)
从这里得到解决方案
switch((operatorType)opType) {
case operatorType.Greater: return Expression.GreaterThan(
Expression.Call(typeof(string),
"Compare", null, new[] { argLeft, argRight }),
Expression.Constant(0, typeof(int)));
}