回答
有兩種方式(很多方式,但我更喜歡這些)。
慢速方式:(真的很慢)使用CodeDom在運行時編譯字符串。示例:
using System.CodeDom.Compiler;
using Microsoft.CSharp;
//...
private static void Main()
{
string Tempreture = "20 > 13 && 20 < 18";
bool? result = Evaluate(Tempreture);
if (!result.HasValue)
{
throw new ApplicationException("invalid expression.");
}
else if (result.Value)
{
//...
}
else
{
//...
}
}
public static bool Evaluate(string condition)
{
// code to compile.
const string conditionCode = "namespace Condition {{public class Program{{public static bool Main(){{ return {0};}}}}}}";
// compile code.
var cr = new CSharpCodeProvider().CompileAssemblyFromSource(
new CompilerParameters { GenerateInMemory = true }, string.Format(conditionCode, condition));
if (cr.Errors.HasErrors) return null;
// get the method and invoke.
var method = cr.CompiledAssembly.GetType("Condition.Program").GetMethod("Main");
return (bool)method.Invoke(null, null);
}
快速的方法:使用Ncalc庫動態解析表達式。
using NCalc;
// ...
string Tempreture = "20 > 13 && 20 < 18";
NCalc.Expression e = new Expression(Tempreture);
if (e.HasErrors())
{
throw new ApplicationException("invalid expression");
}
if ((bool)e.Evaluate())
{
//...
}
else
{
//...
}
謝謝.......它正在工作 –
請告訴我另一種方法做到這一點 –
@ImranPathan你能告訴我什麼是問題用這兩種方式?如果你在某處告訴我所以我可以幫你修復它。 –
我假定x = 20
然後,你可以這樣做:
if(x > 13 && x <18)
20> 13 && 20 <18這個值來自數據庫,因爲它是我要放在if條件,如果如果(20> 13 && 20 <18) –
哦。所以你想評估表達。你可以使用CSharpCodeProvider,但你需要在裏面創建一個適當的類和eval方法 – Umesh
- 1. 如果條件變量爲空,如何返回所有記錄?
- 2. 引用變量不返回值在c + +
- 3. Javascript如果返回條件
- 4. 返回,如果值成語(有條件返回)
- 5. 在條件變量賦值後&&(C)
- 6. 動態返回變量中的條件
- 7. 如何刪除返回值,如果變量是在JavaScript
- 8. 返回值條件
- 9. 返回查詢結果如果條件
- 10. 函數返回值的變化,如果使用本地變量
- 11. Ruby - 如果變量不存在,則返回默認值
- 12. 如果條件動態變量在PHP
- 13. 返回不返回變量值
- 14. c#SpeechSynthesizer SpeakCompleted返回變量
- 15. C++不能返回變量
- 16. 如果變量未定義則返回
- 17. 如果語句變量返回空
- 18. 紅寶石在條件變量賦值「如果」修改
- 19. 返回值用C改變
- 20. 如果返回語句中的條件
- 21. 簡單條件返回true如果document.activeElement =「」
- 22. 如果條件失敗,則返回false
- 23. 退出時,如果條件返回false
- 24. 如果條件不返回true
- 25. 如果條件總是返回true
- 26. 如果條件總是返回true
- 27. 單行分配:如果(條件)變量=值1其他值2
- 28. 如何定義變量,如果條件
- 29. 在單個條件下比較變量與多個值如果條件
- 30. 如何返回字符串變量c
請說清楚你的意思。此外,請包括*代碼*,而不是代碼的屏幕截圖。 – Rob
如果你在這裏粘貼你的代碼而不是顯示它的圖片,那將是非常棒的。 –
首先和最重要的20將永遠不會少於18 ...哪個值是您的變量? – Ben