我有Func<Message, bool>
其中Message
是我的一個類。不區分大小寫Func
我建立一個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。
這可能嗎?
感謝
那麼,你自己在創建'表達式'嗎? – 2013-05-03 09:28:09
是的,它是一個字符串。 – Jon 2013-05-03 09:29:05
什麼是進來的字符串?正如ispiro在他的回答中所說的那樣,該屬性可能會應用ToUpper(),或者您可以改爲使用'string.compare'(假設lambda分析器支持該屬性)。 – 2013-05-03 09:31:51