构建表达式树来表示if-else

Sta*_*ful 6 c# expression-trees

在完整条件表达式上使用ExpressionSerialization对表达式树进行反序列化,即三元运算符给出错误.如果我使用三元运算符,则会导致FullConditionExpression(系统不支持异常)

使用以下链接中的代码:

http://archive.msdn.microsoft.com/exprserialization

上述链接是否有最新版本?

http://metalinq.codeplex.com/

事后试过这个

public Expression<Func<object, string>> LabelCriteria { get; set; }

LabelCriteria = x =>
    {
      if (true)
          return "Cash";
      else      
          return " ";
    }
Run Code Online (Sandbox Code Playgroud)

表达式不支持if - else阻止.它给出了错误"因为带有语句体的lambda表达式无法转换为表达式树.还有其他方法可以做到这一点.

pho*_*oog 5

您必须使用条件运算符:

LabelCriteria = x => true ? "Cash" : " ";
Run Code Online (Sandbox Code Playgroud)

然而,由于条件是常量表达式 ( true) ,编译器可能会因为常量折叠而修改表达式。尝试在那里使用一个变量,看看会发生什么。


Oma*_*mar 5

你可以使用像这样的方法:

string myFunction(Object obj){
     //here your if-else...
}
Run Code Online (Sandbox Code Playgroud)
LabelCriteria = x => myFunction(x);
Run Code Online (Sandbox Code Playgroud)