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(で行うことができます知っている、と述べている必要があります。私の質問は、あなたが多くの表現をしているならば、あなたは何をしているのかに沿っていました。これらを組み合わせるよりエレガントな方法はありますか? –