組み合わせの2つの式(式
型式を使用する必要がある場合があります(など)。
solution
論理演算子の2つの式を使用するには、次の方法を選択できます。<code>Expression<func bool="">> expr1; Expression<func bool="">> expr2; ... // 这不会按预期工作 Expression<func bool="">> andExpression = expr1 AND expr2;</code>
メソッド2:異なるパラメーターxpressions
<code>var body = Expression.AndAlso(expr1.Body, expr2.Body); var lambda = Expression.Lambda<func bool="">(body, expr1.Parameters[0]);</code>
この方法は、および操作に適しています。
<code>static Expression<func bool=""> Not<T>( this Expression<func bool=""> expr) { return Expression.Lambda<func bool="">( Expression.Not(expr.Body), expr.Parameters[0]); }</code>
このバージョンは、2つの式が同じパラメーターを使用し、それに応じて式を調整するかどうかを自動的に検出します。
<code>static Expression<func bool=""> AndAlso<T>( this Expression<func bool=""> left, Expression<func bool=""> right) { var param = Expression.Parameter(typeof(T), "x"); var body = Expression.AndAlso( Expression.Invoke(left, param), Expression.Invoke(right, param) ); var lambda = Expression.Lambda<func bool="">(body, param); return lambda; }</code>
を使用します .NET 4.0以降のバージョンの場合、ExpressionVisitorクラスを使用してEFセキュリティ式を作成できます。この方法では、明示的な変換なしで元のパラメーターを新しいパラメーターの数に置き換えることができます:
以上が論理演算子を使用して2つの表現式を組み合わせる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。