IQueryable データ ソースで検索したい次の値があります。
ユーザーは、Silverlight アプリケーションのテキスト ボックスに値を入力して結果をフィルター処理できます。これらの入力はフィルター処理され、ドメイン サービスに送信されます。
「*」は、ユーザーがワイルドカード検索を行うために入力できるものです。たとえば、「TYPE」が「P32」で始まるすべての値を返します。
List<string> params = new List<string>() { "P32*", "P4552", "P2311" };
次に、このリストをドメイン サービス コードの関数に渡します。
IQueryable<MyClass> temp = this.ObjectContext.MyClass.AsQueryable();
temp = temp.Where(c => params.Contains(c.TYPE));
これは、ワイルドカード検索を実装する前に行ったことです。これを行う最もクリーンな方法は何でしょうか? paramsリストをループして、各文字列でContainsを試すようなことをしなければならないと思っていました(さらに文字列を操作した後)が、その方法はとても汚れているように感じます
foreach (string x in params)
{
//look for * wildcard... do some other stuff
temp = temp.Where(c=>c.TYPE.Contains(x));
}