Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现用户生成的条件语句?_C#_Linq_Conditional Statements - Fatal编程技术网

C# 如何实现用户生成的条件语句?

C# 如何实现用户生成的条件语句?,c#,linq,conditional-statements,C#,Linq,Conditional Statements,我有一个文本框,希望用户在其中指定要在if语句中使用的条件表达式。例如,假设在我的代码中有一个名为myVariable的int和一些值。然后用户输入一个“C#-parsable”表达式,如 @myParameter5&&@myParameter

我有一个文本框,希望用户在其中指定要在
if
语句中使用的条件表达式。例如,假设在我的代码中有一个名为
myVariable
int
和一些值。然后用户输入一个“C#-parsable”表达式,如

@myParameter<20

甚至可能

@myParameter>5&&@myParameter<20

进入
myTextBox
。我想象我的代码是这样的

ConditionalExpression cond = new ConditionalExpression(); 
cond.Expression = myTextBox.Text;   //Get the text from textbox.
cond.Parameters.Add("@myParameter",myVariable);   //use value of 'myVariable" at "@myParameter"

if (cond.Evaluate()){        //if cond evaluates to true
    //do stuff
}
我是否可以使用任何类型的类来实现字符串解析,或者我是否必须自己进行字符串解析,然后以某种方式利用System.Linq.Expressions中的ConditionalExpression类

谢谢。

您可以使用Roslyn API(可以在Nuget上找到)来编译此代码。 您可以使用包含参数的对象作为会话主机对象,并使用SyntaxTree.ParseText从文本编译条件。 确保验证该树,以便用户不会在系统上运行危险代码。
Roslyn很快将成为.NET框架的一部分,但目前它有一个Nuget包。

在.NET中没有内置任何东西,您可以简单地将字符串输入到其中,然后从中获取可以实现此目的的内容。至少没有更多的工作。不过,有些库可能会满足您的需要。是LINQtoObjects还是EF/SQL?如果这是EF,您可能希望使用,而不是解析字符串并手动生成表达式树。