我在 StackOverflow 上找到了一堆關于條件 WHERE 子句的答案,但我找不到一個對我的問題有些特定的答案,所以只是尋求一點幫助......
我公司的網站包含直接在 C# 代碼中撰寫的所有 SQL 查詢(我不喜歡它,但這是另一回事)& 我在嘗試更新包含 WHERE 子句中多個條件的查詢時遇到問題基于用戶在表單上勾選的復選框。

表單中有一組復選框(目前有 3 個選項,但此串列可能會增加)。對于選擇的每個“提供程式型別”,需要在 WHERE 子句中添加一個額外的條件,但我不確定如何最好地處理這個問題。
這是處理此問題的代碼。ProviderTypesCSV根據用戶檢查的選項數量,最多可以包含 3 個值 (0,1,2):
if (!String.IsNullOrEmpty(searchOptions.ProviderTypesCSV))
{
// values are in a csv string. Split out the csv
var statuses = searchOptions.ProviderTypesCSV.Split(',');
if (statuses.Contains("0")) //Hospitals & Facilities
{
strSQL = " AND (<<perform query for 'Hospitals & Facilities'>>)";
}
if (statuses.Contains("1")) //Physicians and Practitioners
{
strSQL = " AND (<<perform query for 'Physcians and Practitioners'>>)";
}
if (statuses.Contains("2")) //In-Person Visit Providers
{
strSQL = " AND (<<perform query for 'In-Person Visit Providers'>>)";
}
}
當前問題顯然,在選擇多個選項時,上面的查詢不考慮。選擇多個選項時,條件運算子需要“或”或“,而不是”和“,但我不確定如何最好地將其設定為UP,而不會制作混亂并考慮到稍后添加的添加'選項。
只是好奇設定它的最佳方式。
uj5u.com熱心網友回復:
您可以定義一個字串串列并添加您的條件,然后" OR "使用分隔符連接每個元素并將其用于您的AND
if (!String.IsNullOrEmpty(searchOptions.ProviderTypesCSV))
{
//values are in a csv string. Split out the csv
var statuses = searchOptions.ProviderTypesCSV.Split(',');
List<string> conditions = new List<string>();
if (statuses.Contains("0")) //Hospitals & Facilities
{
conditions.Add("(<<perform query for 'Hospitals & Facilities'>>)");
}
if (statuses.Contains("1")) //Physicians and Practitioners
{
sconditions.Add("(<<perform query for 'Physcians and Practitioners'>>)");
}
if (statuses.Contains("2")) //In-Person Visit Providers
{
conditions.Add("(<<perform query for 'In-Person Visit Providers'>>)");
}
strSQL = " AND (" String.Join(" OR ", list) ") ";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/382460.html
標籤:C# sql-server
下一篇:計算單獨串列中的結果數
