[英]linq to sql query with checkboxes where condition combination
如果復選框chkAus已選中:
if (chkAus.Checked)
{
vAdvanceSearchResults = (from t in vAdvanceSearchResults
join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
where cc.Code.Contains("AU")
select t).Distinct();**
}
如果檢查了chkAus和chkNz
if (chkNz.Checked && chkAus.Checked)
{
vAdvanceSearchResults = (from t in vAdvanceSearchResults
join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
where cc.Code.Contains("AU") || cc.Code.Contains("NZ")
select t).Distinct();
}
linq查詢的條件隨着選中復選框而改變。
where cc.Code.Contains("AU") || cc.Code.Contains("NZ")
我有將近10個復選框,並且在如何編寫這么多條件上陷入困境。 請幫忙。
例如,如果存在chkUS :則linq查詢的chkAus,chkNz,chkUS復選框的組合會更改。
where cc.Code.Contains("AU") || cc.Code.Contains("NZ") || cc.Code.Contains("US")
將它們全部放入列表中,然后執行if list.contains(cc.Code)
var a = new List<string>(){"AU","NZ","US"};
var linq = (from t in vAdvanceSearchResults
join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
where a.Contains(cc.Code)
select t).Distinct();
首先創建所選復選框的列表。 像這樣。
var selectedCountries = new List<string>();
if (chkAus.Checked) selectedCountries.Add("AU");
if (chkNz.Checked) selectedCountries.Add("NZ");
if (chkUs.Checked) selectedCountries.Add("US");
//... And so on
然后修改您的linq查詢,以檢查此列表是否包含代碼,我的意思是反轉比較是一個答案。 確保刪除此linq查詢的條件。
vAdvanceSearchResults = (from t in vAdvanceSearchResults
join imp in _bDataContext.Imprints on t.ImprintID equals imp.ID
join cc in _bDataContext.CountryCodes on imp.CountryID equals cc.ID
where selectedCountries.Contains(cc.Code)
select t).Distinct();
這將解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.