我的代碼:PredicateBuilder <True>和PredicateBuilder <False>之間的區別?
var predicate = PredicateBuilder.True<Value>();
predicate = predicate.And(x => x.value1 == "1");
predicate = predicate.And(x => x.value2 == "2");
var vals = Value.AsExpandable().Where(predicate).ToList();
如果我有PredicateBuilder.True<Value>()
,它帶回我所期望的,但如果我有PredicateBuilder.False<Value>()
,它帶回0的記錄。有人可以解釋其中的區別是什麼,爲什麼在一種情況下,我得到0條記錄,另一條我得到了我所期望的。我已經閱讀了PredicateBuilder
文檔,但它有點令人困惑。我有一種感覺,它與我一起的謂詞Anding
有關嗎?
我找不到關於該類的任何文檔,但我會假設你的調用創建了一個相當於'true &&(x.value1 ==「1」)&&(x。value2 ==「2」)',根據您的項目可能會或可能不會被評估爲「真實」(因此您可以回到「您期望的內容」,無論如何)。另一方面,如果從「false」開始,則表達式可能永遠不會評估爲「true」,因爲「false」會導致「false」。因此,謂詞表達式將返回所有項目的「false」,並且不會返回任何結果。 –
@ O.R.Mapper - 謝謝。這裏是文檔:http://www.albahari.com/nutshell/predicatebuilder.aspx – Xaisoft
http://stackoverflow.com/questions/15325245/linqkit-predicatebuilder-returns-all-or-non-rows – mirtiger