當你創建這個查詢代碼:
from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
headIndex = headIndex++
}
它在數據庫實際上執行。數據庫無法修改代碼中的值。所以你不能從數據庫中增加代碼本地值(headIndex
)。 (另外,正如@Kirk Woll所指出的那樣,修改select中的值是非常糟糕的做法,select應該只是獲取/構建一些東西,而不是改變狀態或產生副作用。)
如果你所有的東西都是「重新做更新的價值,你不需要使用選擇。您可以添加的記錄的計數直接值:
headIndex += db.vwCustomizationHeaders.Count(ch => ch.ProductID == pID);
被註釋掉的部分建議,你還建設的vwCustomizationHeader
的List雖然,這樣的事情:
lst = (from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
SomeField = xx.SomeField,
AnotherField = xx.SomeOtherField
// etc.
});
從您可以使用lst
對象修改您的計數器:
headIndex += lst.Count();
您的查詢將執行服務器端。不用說,你可以修改外部變量是不可思議的。你將不得不首先執行查詢('.ToArray()'等),然後遍歷它來增加。而且,修改'select'子句中的狀態實際上是一種很差的做法。 –
我應該如何修改不選擇然後..? – NoviceToDotNet
'foreach'循環(對'.ToArray'的結果)會很好。 –