1
我是新來使用表達式,我正在通過一個示例中遇到一些問題。組合表達式
我想要實現的是創建一個表達式,其中有2個(或多個)表達式。
例如:
public static Expression<Func<Occurrence, bool>> ReporterStartsWithAndClosed()
{
ParameterExpression occPar = Expression.Parameter(typeof(Occurrence));
MemberExpression recorderProp = Expression.Property(occPar, "Reporter");
MemberExpression fullnameProp = Expression.Property(recorderProp, "FullName");
ConstantExpression letter = Expression.Constant("A", typeof(string));
MethodInfo miStartsWith = typeof(string).GetMethod("StartsWith", new[] { typeof(string) });
MethodCallExpression mCall = Expression.Call(fullnameProp, miStartsWith, letter);
MemberExpression oiProp = Expression.Property(occPar, "OccurrenceIncident");
MemberExpression statusProp = Expression.Property(oiProp, "OccurreceIncidentStatus");
MemberExpression nameProp = Expression.Property(statusProp, "Name");
ConstantExpression name = Expression.Constant("Closed", typeof(string));
BinaryExpression equalTo = Expression.Equal(name, nameProp);
return ...?
}
我的問題,是我如何結合這些表達式返回正確的類型此方法。即mCall和equalTo表達式邏輯組合的語法是什麼?
我最初的想法是,我應該使用BlockExpressions,但我無法得到這個工作。
任何幫助將不勝感激。
感謝 大衛
我應該也說,我知道這可能與Expresion.And()來完成。如果你有很多表情,我的問題更多的是你做什麼。有沒有更優雅的方式來組合這些? – 2012-02-17 09:26:19