LINQ語法-延遲執(zhí)行
發(fā)布時間:2020-05-31 19:22 點擊量:
LINQ執(zhí)行過程的一個重要特征是延遲執(zhí)行,也就是說,當你知道你想要獲得數(shù)據(jù)時,你就回去計算。考慮上面例子中的代碼。您可能認為在執(zhí)行查詢語句后,所有的值都將保存在查詢中。事實上,在調(diào)用foreach之前不會執(zhí)行該語句。這個特性對我們的編碼有好有壞。
WP8WIN 8.1方法/步驟1的工具/原材料價值流2012的優(yōu)勢:
該代碼對1,000,000個數(shù)據(jù)進行操作,對每個數(shù)據(jù)暫停1秒鐘,然后返回計算值。如果要在執(zhí)行foreach之前計算這些值,我們需要等待大約11.57天。延遲執(zhí)行的優(yōu)勢得到了發(fā)揮。當執(zhí)行foreach方法時,執(zhí)行一個循環(huán)來計算一個值,然后將該值打印出來。
-1步讀數(shù)2個缺點:
LINQ的延遲執(zhí)行機制有時也有缺點。在下面的例子中,我們在一個循環(huán)中打印兩次結(jié)果,結(jié)果可能與我們想象的不同。
我們有兩種方法來解決這個問題。一種方法是在第二次執(zhí)行時重置計數(shù)器。另一種方法是迫使LINQ立即執(zhí)行該聲明。我們可以通過LINQ將結(jié)果轉(zhuǎn)換成數(shù)組對象來實現(xiàn)這一點。我們只需要添加。ToArray在前面的查詢表達式之后達到這個目的。
-4步讀取-5步讀取-4運行結(jié)果:可以看出,第二次執(zhí)行與第一次執(zhí)行的結(jié)果相關(guān),這不是我們想要的結(jié)果,我們希望兩次執(zhí)行的結(jié)果相同。
目標
相關(guān)推薦