繁体   English   中英

不区分大小写的函数

[英]Case-insensitive Func

我有一个Func<Message, bool> ,其中Message是我的一类。

我建立一个Lambda并将其编译为Func<Message,bool>

public static Func<Classes.Message, bool> GetPredicate(string expression)
{
    Func<Classes.Message, bool> result = null;

    try
    {
        ParameterExpression parameter = Expression.Parameter(typeof(Classes.Message), "Message");
        var lambda = DynamicExpression.ParseLambda(new[] { parameter }, null, expression);
        result = lambda.Compile() as Func<Classes.Message, bool>;
    }
    catch (Exception e)
    {
        _log.Fatal(e);
    }

    return result;
}

这导致

Message => (((Message.ContainsProperty("Gender") == True) AndAlso (Message.GetPropertyValue("Gender") != "Female")) AndAlso (Message.ChannelString != "FacebookComment"))

稍后, Func被执行,但是我想使其不区分大小写,因此当消息对象被传递但性别是“女性”而不是“女性”时,它仍然在布尔值中返回true。

那可能吗?

谢谢

使用ToUpper()

Message.GetPropertyValue("Gender").ToUpper() != "FEMALE"

这是从表达式中生成的。

我相当确定,字符串的静态公共方法是通过DynamicQuery公开的,因此您需要使用string.compare:

(x) => String.Compare (x.Gender, "Female", StringComparison.OrdinalIgnoreCase)

不幸的是,这意味着您不能使用类似sql的语法,但是它应该解析并运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM