を組み合わせます 2つの
型式がある場合、論理演算子(など、または、またはそうでない)を使用してそれらを結合する必要がある場合があります。この記事では、この目標を達成するためのさまざまな方法について説明します。
Expression<Func<bool>>
同じパラメーターインスタンス
2つの式が同じを使用している場合、組み合わせは単純です。
これは、単一の操作を無効にすることにも適用できます。
ParameterExpression
<code class="language-csharp">var body = Expression.AndAlso(expr1.Body, expr2.Body); var lambda = Expression.Lambda<Func<bool>>(body, expr1.Parameters[0]);</code>
を使用して組み合わせることができます。
<code class="language-csharp">static Expression<Func<bool>> Not<T>( this Expression<Func<bool>> expr) { return Expression.Lambda<Func<bool>>( Expression.Not(expr.Body), expr.Parameters[0]); }</code>
およびにも適用できます。
一般的な方法Invoke
<code class="language-csharp">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>
OrElse
Not
.NET 4.0から、
は、EF互換式を構築するメカニズムを提供しました。 特定のシーンと一致するメソッドを選択することにより、
インスタンスの論理式を効果的に組み合わせることができます。以上がC#式で論理式を組み合わせる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。