2011-11-22 5 views
6

Linqからオブジェクトへの動的LinqでContainsを使用する場合、検索では大文字と小文字が区別されます。大文字と小文字を区別しない検索ができるようにしたいと思います(Linq-to-sqlのように、SQL Serverはデフォルトでこれを行います)。 trueは意味大文字と小文字を区別しない動的なLinqが含まれています

this.someQuery = this.someQuery.Where(field + ".Contains(@0, true)", strValue); 

caseinsensitive = trueを、System.String.Contains提供の拡張子のいずれかのようなのような

何か。私はSystem.Stringの拡張機能を動的なLinqとデフォルトで使うことはできません。

+0

これは、「this.someQuery = this.someQuery.Where(ToLower()が(@ 0、true)を含む」、strValue.ToLower());働く私はDynamic.csにいくつかの変更を加えたので、デフォルトで動作するかどうかわかりません。 –

+0

[LINQは大文字と小文字を区別しません]の重複可能性があります(http://stackoverflow.com/questions/3360772/linq-contains-case-insensitive) – Sjoerd

+0

重複しないのは、動的linqではないためです。 –

答えて

13

比較のちょうど.ToLower()できますか?このようなもの:

this.someQuery = this.someQuery.Where(field.ToLower().Contains(strValue.ToLower())); 

または、私はあなたが探しているものを誤解しましたか?

+0

ToLower()はDynamic Linqではサポートされていません –

+1

私はこれを試してみましたが、これはうまくいきました。昨日は明らかに仕事をしませんでした:this.someQuery = this.someQuery.Where(field + "ToLower ).Contains(@ 0、true) "、strValue.ToLower()); –

+0

これは単純だとは信じられません。私は昨日これを試したことは知っていますが、おそらくタイプミスなどがありました。あなたの提案のためによくthx! –

関連する問題