Entity Framework字符串数据类型使用>、>=、<、<=操作符:Lambda表达式

3
我正在处理一个基于动态Lambda表达式的查询,不使用API。
如果用户选择FieldName为“AddressLine1”,Operator为“>=”,FieldValue为“K”,则应该返回以K开头的所有AddressLine1字段值,包括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);
        ...
    }
}

如何修改代码以使其适用于字符串数据类型的大于等于运算符。我正在寻找这方面的表达式。有人有想法吗?

2个回答

4
您可以使用 String.Compare() 方法:
return String.Compare(argLeft, argRight) >= 0;

Compare()函数返回以下结果:当strA小于strB时,返回<0;当它们相等时,返回0;当strA大于strB时,返回>0。


Knittl, 返回 String.Compare(argLeft, argRight) > 0; 返回 String.Compare(argLeft, argRight) >= 0; 两者返回的结果相同。你有什么想法吗?关于这个问题,我在这里发布了:http://stackoverflow.com/questions/12390695/lambda-expression-compare-operator-issue - sivaL

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接