表达式树可能不包含赋值运算符?

如何在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所指出的那样,在select中修改像这样的值是非常糟糕的做法。选择应该只是获取/构建一些东西,而不是改变状态或产生副作用。)

如果你正在做的只是更新该值,则不需要使用select。 您可以直接将记录计数添加到该值:

 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();