ホームページ > バックエンド開発 > C++ > 論理演算子を使用して2つの表現式を組み合わせる方法は?

論理演算子を使用して2つの表現式を組み合わせる方法は?

Patricia Arquette
リリース: 2025-01-31 05:46:08
オリジナル
487 人が閲覧しました

How to Combine Two Expression Expressions Using Logical Operators?

組み合わせの2つの式(式

データ操作の分野では、論理演算子を使用して2つの式

型式を使用する必要がある場合があります(など)。 チャレンジ

次のコードフラグメントは、あなたが直面する可能性のある課題を示しています:

solution

論理演算子の2つの式を使用するには、次の方法を選択できます。
<code>Expression<func bool="">> expr1;
Expression<func bool="">> expr2;

...

// 这不会按预期工作
Expression<func bool="">> andExpression = expr1 AND expr2;</code>
ログイン後にコピー
メソッド1:同じパラメーター拡張

expr1とexpr2で同じパラメーター拡張を使用する場合、単にテキストを組み合わせて元のパラメーターを使用して新しいラムダ式を作成できます。

この方法は、単一の式を無効にすることにも適用できます。

メソッド2:異なるパラメーターxpressions

<code>var body = Expression.AndAlso(expr1.Body, expr2.Body);
var lambda = Expression.Lambda<func bool="">(body, expr1.Parameters[0]);</code>
ログイン後にコピー
LINQプロバイダーによると、2つの式が異なるパラメーター拡張インスタンスを使用している場合、Invokeを使用してそれらを結合できます。

この方法は、および操作に適しています。
<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>
ログイン後にコピー

メソッド3:一般バージョン

このバージョンは、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>
ログイン後にコピー
expressionVisitor

を使用します .NET 4.0以降のバージョンの場合、ExpressionVisitorクラスを使用してEFセキュリティ式を作成できます。この方法では、明示的な変換なしで元のパラメーターを新しいパラメーターの数に置き換えることができます:

これらのメソッドを使用すると、さまざまな論理式をシームレスに組み合わせて、データに複雑なクエリ操作を実行できます。

以上が論理演算子を使用して2つの表現式を組み合わせる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート