当你创建这个查询代码:
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'的结果)会很好。 –