2016-12-05 8 views
0

Machine、Action、Partの3つのプロパティで検索クラスを使用しています。
検索ページには、これらのプロパティで検索する3つのテキストボックスコントロールがあります。値を含むこれらのプロパティの任意の組み合わせを効率的に検索する方法はありますか?
したがって、ユーザーは、3つのプロパティーまたはヌルまたは空でないプロパティーの組み合わせをすべて検索する可能性があります。複雑なオブジェクトの文字列プロパティにtermが含まれているかどうかを確認するnullまたは空でない場合

私は上記に基づいてEFを使用してデータベースをクエリするロジックを構築しています。

答えて

1

私は(拡張メソッドとして)そのようなものを以下のように行う:

public static IQueryable<MyClass> Filter(this IQueryable<MyClass> items, string machineQuery, string actionQuery, string partQuery) 
{ 
    if (!String.IsNullOrWhiteSpace(machineQuery) 
     items = items.Where(i => i.Machine.Contains(machineQuery); 

    if (!String.IsNullOrWhiteSpace(actionQuery) 
     items = items.Where(i => i.Action.Contains(actionQuery); 

    if (!String.IsNullOrWhiteSpace(partQuery) 
     items = items.Where(i => i.Part.Contains(partQuery); 

    return items; 
} 

これはEFによりDB側のクエリに変換されます。あなたはそれを次のように使用します:

var filteredItems = dbContext.MyClasses.Filter(machineQuery, actionQuery, partQuery); 
+0

これは最も効率的な方法です+1 – Toshi

関連する問題