Expression<Func<bool>>
linqはしばしば式を使用し、式はラムダ発現の表現です。式を処理する場合、多くの場合、2つの論理式が必要です。
たとえば、
これらの式を組み合わせて、同じタイプの新しい表現を取得することをお勧めします。
同じパラメーターとの組み合わせの表現
<code class="language-csharp">Expression<Func<bool>> expr1; Expression<Func<bool>> expr2;</code>
および
<code class="language-csharp">// 示例用法(原样无效) Expression<Func<bool>> andExpression = expr1 AND expr2;</code>同じパラメーターを使用する場合、操作は非常に単純です:
組み合わせの異なるパラメーターの式
expr1
ただし、式が異なるパラメーターを使用する場合、それらを結合する方法に注意を払う必要があります。これを実現するには、を使用してください
expr2
<code class="language-csharp">var body = Expression.AndAlso(expr1.Body, expr2.Body); var lambda = Expression.Lambda<Func<bool>>(body, expr1.Parameters[0]);</code>
次のコードフラグメントは、組み合わせ式を決定する最も適切な方法を決定する一般的な方法を提供します。
その他の予防策Invoke
.NET 4.0以降のバージョンでは、
<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>
この復活した出力は、より簡潔で読みやすいコードスニペットを提供します
以上がlinqのタイプ「式」の論理式を組み合わせる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。