如何在linq语句中递增索引值。
int headIndex = -1;
// int itemIndex = -1;
lst = (from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
headIndex = headIndex++,// Guid.NewGuid(),
}
在代码中创建此查询时:
from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
headIndex = headIndex++
}
它实际上是在数据库中执行的。 数据库无法修改代码中的值。 因此,您不能从数据库中递增该代码本地值 ( headIndex
)。 (此外,正如@Kirk Woll指出的那样,在选择中修改这样的值是非常糟糕的做法。 选择应该只是获取/构建某些内容,而不是改变状态或产生副作用。
如果您所做的只是更新该值,则无需使用选择。 您可以直接将记录计数添加到值中:
headIndex += db.vwCustomizationHeaders.Count(ch => ch.ProductID == pID);
注释掉的部分表明您也在构建一个vwCustomizationHeader
列表,如下所示:
lst = (from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
SomeField = xx.SomeField,
AnotherField = xx.SomeOtherField
// etc.
});
从那里,您可以使用 lst
对象来修改计数器:
headIndex += lst.Count();