【发布时间】:2019-06-05 10:20:42
【问题描述】:
我正在尝试使用 DynamicExpression.ParseLambda 解析 LambdaExpression 树,但在使用带有 StringComparison 枚举的 string.Equals 时无法正确解析它。
我试过了:
a) 使用 StringComparison 但我收到错误“未知标识符 'StringComparison'”。
b) 使用 System.StringComparison 的完整命名空间,但我收到错误“未知标识符 'System'”。
[TestMethod()]
public void CanParseStringEqualsWithEnum()
{
var input = @"p0.Equals(""Testing"", StringComparison.InvariantCultureIgnoreCase)";
var p0 = Expression.Parameter(typeof(string), "p0");
System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p0 }, typeof(bool), input);
}
删除 StringComparison 有效。
[TestMethod()]
public void CanParseStringEqualsWithEnum()
{
var input = @"p0.Equals(""Testing"")";
var p0 = Expression.Parameter(typeof(string), "p0");
System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p0 }, typeof(bool), input);
}
我可以对两个字符串执行 .ToUpper() 并以这种方式进行比较,但我知道这并不涵盖所有场景,最好使用 StringComparison。
【问题讨论】:
标签: c# linq expression-trees dynamic-linq