2013-01-15 303 views
0

我有一個形式三個字段的視圖:關鍵字搜索

[Textfield] : Name 
[Dropdown] : Sector 
[Dropdown] : Country 

我的要求是通過在控制器方法這三個關鍵字來過濾結果,並且還通過接收日期首先命令結果然後按名稱。

有這麼多的可能性,例如:如果Name比賽和Sector比賽做過濾等

我可以if else或與任何其他麻煩的方式做到這一點,但我怎麼能在一個聲明中這樣做的LINQ 。我需要返回一個列表。

+0

我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

你能給更多的信息或代碼你試過 –

+0

謝謝大家誰回答我的問題。找到我正在尋找的答案,並希望它能幫助其他人。 http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html –

回答

0

看一看這個解決方案,看看它是否可以幫助你實現你的理想目標:如果你只需要簡單的搜索,找出你的一些列包含指定的字符串,嘗試這樣的事情search keywords using linq

1

// dc is some datacontext 
var query = dc.MyEntities.Where(x=> x.Name.Contains(inputName) || 
            x.Sector.Contains(inputSector) || 
            x.Contry.Contains(inputCountry)) 
         .OrderBy(x=> x.receivedDate) 
         .ThenBy(x=> x.Name); 
var resultList = query.ToList(); 

還要檢查臺(套),你的數據庫做區分大小寫(CS)或不區分大小寫(CI)搜索的排序規則 - 根據您的需要。但是要在CS整理中進行不區分大小寫的搜索,您需要使用ToUpper()擴展上面的代碼。

x.Name.ToUpper().Contains.(inputName.ToUpper()); 

但要注意,它不會通過Turkey test :-) - 有什麼奇怪與uppercasing他們和lowercasing

這裏也是上不區分大小寫.Contains(string)有趣的資源:Case insensitive 'Contains(string)'

如果你需要一些複雜的全文搜索。我會找: