2012-09-17 4 views
7

ラムダ式Containsオペレータこのコードを使用して生成することができます。ラムダ式NotContains演算子存在しますか?

Company => Company.Name.Contains("test1") 

ソースコードContainsオペレータのための細かい作業

var method = typeof(string).GetMethod("Contains", new[] { typeof(string) }); 
var startsWithDishExpr = Expression.Call(argLeft, method, argRight); 

その。 NotContains演算子で動作するコードを変更する方法。

ソースコード

var method = typeof(string).GetMethod("NotContains", new[] { typeof(string) }); 
var startsWithDishExpr = Expression.Call(argLeft, method, argRight); 

NotContainsオペレータは働いていません。誰でも提案がありますか?

+6

単純な 'not'演算子と' Contains'の呼び出しを組み合わせるとどうなりますか? 'Expression.Not(Expression.Call(containsMethod、...))' – CodesInChaos

+6

最初のサンプルは 'string.Contains'メソッドの呼び出しを作成しています。 'string.NotContains'のようなメソッドはありません。 –

+0

@CodesInChaosおっと、私はあなたのコメントをすぐに見ていませんでした。答えとして投稿する、私はupvote :) – dasblinkenlight

答えて

16

NotContainsというメソッドへの呼び出しを作成すると、string.NotContainsメソッドが存在しないため、機能しません。

簡単な解決策は、not演算子をContainsメソッドと組み合わせることです。通常は!x.Contains(y)と書いてありますが、x.NotContains(y)ではありません。

このような式を作成するには、Expression.Not(callExpression)を使用できます。

+0

CodesInChaos、Expression.Not(callExpression)、NotContainsでうまくいきました。ありがとう – sivaL

関連する問題