これは、会社のイントラネットで最大4人が使用する小さなアプリケーションです。私はC#と.NETを初めて使用するので、ソリューションが大規模である必要はありません。
ユーザーが検索したいカテゴリ(アプリケーション名、マネージャーなど)を選択できる単純な.NET CRUDアプリの検索フィールドを作成し、それに基づいて結果をフィルターできるテキストボックスを作成しようとしていますフィールド名。ドロップダウンメニューの項目はクラスフィールドメンバーであり、すべて検索可能にしたいと考えています。実行時に列名を渡すことができるように文字列を作成するために動的Linqライブラリを使用していますが、なんらかの理由でクエリが結果を返しません。
これが私の現在のクエリです
dr_details = dr_details.Where("@0 == @1",searchType, searchString);
したがって、たとえば、searchTypeとsearchStringは、クエリ文字列から値を取得し(それぞれ「Manager」と「Joe」と言います)、クエリを次のように置き換えます。
dr_details = dr_details.Where("Manager == Joe");
これは私に結果を与えません。ただし、文字列"Manager == Joe"
をクエリにハードコードすると、問題なく実行されます。
助言がありますか?この問題が原因で、髪が十分に長い場合、髪がぐちゃぐちゃになります。 :p
必要がない場合は、必ずしも動的linqを使用する必要はありません。
このようなものを試してください:
var query = myList.AsQueryable();
switch(searchType)
{
case "Manger":
query = query.where(x=> x.Manager == searchString);
break;
case "....":
break;
default:
// No search type match in string... an exception? your call
break;
}
クエリを「構築」していくので、これは直感的にわかります...
編集:
それがあまりにも痛い場合は、 この投稿に従ってください