我正在編寫一個需要執行搜索的程序作爲所需功能之一。用戶應該能夠使用任何數量的字段,從無到全部(總數爲7)。到目前爲止,我已經成功中分組數據輸入的各種情況下的if語句,像這樣:在IF語句中對多個條件進行分組C#
List<TypeClass> myList = new List<TypeClass>
foreach TypeClass currentItem in myList
{
if (data1 == currentItem.GetData1() || data1 == "Do Not Search" && (data2 == currentItem.GetData2() || data2 == "Do Not Search") && (data3...)
{
//Stuff
}
}
如果你注意到,我分組括號內的每個數據字段,這樣的聲明只能滿足如果每個的輸入的數據是所需的條件,或者是一個「空場」。但是,我不能將聲明的第一部分與其他數據進行分組2,3,4 ...相反,即使其他搜索字段不滿足條件該聲明。如果我使用額外的括號,程序完全忽略了if語句並將其視爲沒有任何一個匹配。
所以,如果我把它寫這樣的:
if ((data1 == currentIten.GetData1 || data1 == "Do Not Search") && (data2...)
沒有得到確認,該語句將被忽略。這是正常的嗎?有沒有更好/更有效的方法來處理可選的搜索字段選擇?
編輯:很抱歉的錯字,每個GetDataX是一個訪問,我忘了寫括號()
我會猜測你的代碼之外有什麼事情正在發生。你確定'data1'設置正確嗎? – climbage 2012-04-16 23:02:37
是的,所有的數據都在那裏,這是一個實際檢查它的問題,這是我現在的問題。如果我在開始時取出雙括號並僅替換一個括號,那麼一切正常,但是沒用,因爲如果數據1的計算結果爲true,但其他數據不是,則WHOLE語句的計算結果爲true,無論如何。 – 2012-04-16 23:06:46
當然,您需要圍繞data1條件進行括號。仔細檢查值。其中一個dataX不匹配,將整個表達式評估爲false。重寫是否作爲一系列嵌套ifs,逐步瀏覽並查看不匹配的位置。 – 2012-04-16 23:08:46