2016-12-05 48 views
0

我正在使用具有3個屬性的Search Class:Machine,Action,Part。
搜索頁面有3個文本框控件供用戶搜索這些屬性。有沒有一種有效的方法來搜索這些包含值的屬性的任何組合?
因此,如果用戶不爲null或爲空,則用戶可能會搜索所有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

相關問題