[英]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.