我試圖實現搜索功能,但遇到問題時,有些字段未由用戶填寫。Linq跳過查詢,如果字符串爲空
string country = searchCountry.Text.ToLower();
string state = searchState.Text.ToLower();
var searchLocation= (from h in db.Locations where (!string.IsNullOrWhiteSpace(country) ? h.Country.ToLower().Contains(country):false)
&& (!string.IsNullOrWhiteSpace(state) ? h.State.ToLower().Contains(state) : false)
select h);
的問題是,當字符串之一是空的searchLocation返回任何內容並只能當兩個字段填寫。我曾嘗試更換& &與||但是它會得到結果,即使其中一個搜索項不在數據庫中。
有沒有辦法做到這一點,除了Filtering out null values in a linq search
你有什麼反對*在linq搜索過濾出空值*? –
@Gert我沒有什麼反對過濾空值,我只是希望有一種方法可以在一個語句中執行,而不是多個if語句。 – Question
組合查詢的優點是SQL語句可以更小並且不包含不必要的元素。 –