課題:
指定されたメソッド シグネチャ:
public bool AreTheSame<T>(Expression<Func<T, object>> exp1, Expression<Func<T, object>> exp2)
2 つの式が同等かどうかを確認する最も効果的な方法を決定します。この評価は、c => のような単純な MemberExpression のみをサポートする必要があります。 c.ID.
提案された解決策:
配列、新しい演算子などをサポートする Marc のコードの最適化されたバージョンを以下に示します。これは、AST を比較するより洗練された方法を採用しています。
public static class LambdaCompare { public static bool Eq<TSource, TValue>( Expression<Func<TSource, TValue>> x, Expression<Func<TSource, TValue>> y) { return ExpressionsEqual(x, y, null, null); } ... private static bool ExpressionsEqual(Expression x, Expression y, LambdaExpression rootX, LambdaExpression rootY) { ... } ... }
詳細な説明:
利点:
以上がC# でラムダ式の等価性を効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。