1

テキストフィールドで大文字と小文字を区別しない検索を実行する必要があるテーブルがあります。

このクエリをデータベースのLinqPadで直接実行すると、期待どおりに機能します

Table.Where(tbl => tbl.Title.Contains("StringWithAnyCase"))
// also, adding in the same constraints I'm using in my repository works in LinqPad
// Table.Where(tbl => tbl.Title.Contains("StringWithAnyCase") && tbl.IsActive == true)

私のアプリケーションには、初期フィルタリングを行うIQueryableオブジェクトを公開するリポジトリがあります。これは次のようになります。

var dc = new MyDataContext();

public IQueryable<Table> GetAllTables()
{
    var ret = dc.Tables.Where(t => t.IsActive == true);
    return ret;
}

コントローラ(MVCアプリ)では、LinqPadクエリを模倣するために次のようなコードを使用します。

var rpo = new RepositoryOfTable();
var tables = rpo.GetAllTables();
// for some reason, this does a CASE SENSITIVE search which is NOT what I want.
tables = tables.Where(tbl => tbl.Title.Contains("StringWithAnyCase");
return View(tables); 

この列は、SQLServer2008でとして定義されていnvarchar(50)ます。

** アップデート **

IQueryableプロパティを持つ部分クラス(Linq-To-SQLのエンティティの1つ)がありましたが、どういうわけかEntitySetからIQueryableを返すと、後のクエリがIEnumerable(Linq-To-Objectsを読み取る)の方法で動作するようになりました。彼らはIQueryable型に作用していましたが。

4

0 に答える 0