2012-09-11 25 views
2

我正在使用動態Lambda表達式查詢,而不使用API​​。實體框架字符串數據類型使用>,> =,<,<=運算符:Lambda表達式

如果用戶選擇字段名稱爲「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); 
     ... 
    } 
} 

如何修改代碼字符串數據類型的工作比等於運算符大。我正在尋找這個表達。任何人有想法?

回答

3

可以使用String.Compare()方法:

return String.Compare(argLeft, argRight) >= 0; 

Compare()返回< 0如果STRA小於STRB,0當它們相等時,和> 0,如果STRA大於STRB更大。

+0

你是正確的Knittl – sivaL

+0

Knittl,返回String.Compare(argLeft,argRight)> 0;返回String.Compare(argLeft,argRight)> = 0; 兩者都返回相同的結果。你有什麼主意嗎?關於這個我張貼在這裏http://stackoverflow.com/questions/12390695/lambda-expression-compare-operator-issue – sivaL

+0

它的工作,正確的論點我dint給正確的一個 – sivaL

相關問題