簡體   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