我有一個形式三個字段的視圖:關鍵字搜索
[Textfield] : Name
[Dropdown] : Sector
[Dropdown] : Country
我的要求是通過在控制器方法這三個關鍵字來過濾結果,並且還通過接收日期首先命令結果然後按名稱。
有這麼多的可能性,例如:如果Name
比賽和Sector
比賽做過濾等
我可以if else
或與任何其他麻煩的方式做到這一點,但我怎麼能在一個聲明中這樣做的LINQ 。我需要返回一個列表。
我有一個形式三個字段的視圖:關鍵字搜索
[Textfield] : Name
[Dropdown] : Sector
[Dropdown] : Country
我的要求是通過在控制器方法這三個關鍵字來過濾結果,並且還通過接收日期首先命令結果然後按名稱。
有這麼多的可能性,例如:如果Name
比賽和Sector
比賽做過濾等
我可以if else
或與任何其他麻煩的方式做到這一點,但我怎麼能在一個聲明中這樣做的LINQ 。我需要返回一個列表。
謝謝大家誰回答我的問題。找到我正在尋找的答案,並希望它能幫助其他人。
http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html
很好,你已經找到了解決你的問題。但是,它與您所問的有關LINQ的問題無關。 ;-) – mipe34
看一看這個解決方案,看看它是否可以幫助你實現你的理想目標:如果你只需要簡單的搜索,找出你的一些列包含指定的字符串,嘗試這樣的事情search keywords using linq
。
// 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)'
如果你需要一些複雜的全文搜索。我會找:
我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
你能給更多的信息或代碼你試過 –
謝謝大家誰回答我的問題。找到我正在尋找的答案,並希望它能幫助其他人。 http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html –