我有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