IEnumerable<WireUsrTgInfo> lstWireData =
(from var in lstWireUsrTgInfo
where var.bWireData == true && var.bWireData == false --> This is not working
select var).AsEnumerable<WireUsrTgInfo>();
如何做到這一點...如何在C#linq中創建AND運算符?
IEnumerable<WireUsrTgInfo> lstWireData =
(from var in lstWireUsrTgInfo
where var.bWireData == true && var.bWireData == false --> This is not working
select var).AsEnumerable<WireUsrTgInfo>();
如何做到這一點...如何在C#linq中創建AND運算符?
bWireData
不能同時爲真和假。你的邏輯有一個缺陷。
根據碼提供
var.bWireData == true && var.bWireData == false
它不能工作,因爲相同的變量不能當代等於兩個oposite值。
,如果您需要參數化這一點,你可以不喜歡它:
bool expectedValue = true; //OR False
IEnumerable<WireUsrTgInfo> lstWireData = (from var in lstWireUsrTgInfo
where var.bWireData == expectedValue
select var).AsEnumerable<WireUsrTgInfo>();
編輯
並在查詢不使用var
,它的上下文(由Monkieboy爲mantioned)C#
關鍵詞。要清楚:你可以使用,但你必須避免這樣做,因爲它會造成混淆。
'var'不是保留的,而是一個'contextual'關鍵字;你是正確的,它不應該使用,但爲混淆問題。 http://msdn.microsoft.com/en-us/library/x53a06bb。aspx –
@Monkieboy:確定你可以**使用它,但你**沒有**那樣做,因爲混淆問題。 – Tigran
是的,進一步澄清,但稱它爲'保留'關鍵詞在技術上是錯誤的。這是一個「上下文」關鍵字。將它用作變量名有點令人沮喪,因爲如果在編譯期間突出顯示(作爲警告),就像真正的「保留」關鍵字一樣,它會使生活更輕鬆。 –
這將永遠不會工作:WHERE bWireData == true && bWireData == false
是不合邏輯的因爲bWireData不能同時爲真和假。
var
是一個關鍵字,爲避免混淆,不應將其用作變量的名稱。
正如其他答案所述,您的過濾條件是錯誤的。但還有一些我想補充的內容:
不要比較布爾數據與true
或false
。布爾數據實際上是一個問題的答案是否是true
。
var query = from info in lstWireUsrTgInfo
where info.bWireData // selects data which is true
select info;
另外var
是關鍵字;
也不要在變量名稱中使用前綴(考慮更好的命名 - HasWireData
,wireUserTagInfos
)。
& &是正確的操作符。然而,正如其他海報所指出的那樣,您的問題就像是說「如果奧巴馬是總統,奧巴馬不是總統,讓我開心」。基本上你已經建立了一個矛盾,它總會被評估爲假,因此不會返回任何結果。順便說一句,你可能有興趣得知& &是一個有條件的,也就是說,如果第一項是真的,那麼第二項才被評估,因此如果結果不可避免地是錯誤的,那麼節省第二項的處理。
不要使用'var'它是令人困惑和關鍵字。 –
就是這樣:)'var lstWireData = Enumerable.Empty();' –
2kay
最後不需要包含括號和'AsEnumerable()'。結果將是相同的。 –