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

Nov*_*Net 5 c# linq

如何在linq语句中增加索引值.

  int headIndex = -1;
           // int itemIndex = -1;
            lst = (from xx in db.vwCustomizationHeaders
                   where xx.ProductID == pID
                   select new custHeader()
                   {
                       headIndex = headIndex++,// Guid.NewGuid(),
             }
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 7

当您在代码中创建此查询时:

from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
    headIndex = headIndex++
}
Run Code Online (Sandbox Code Playgroud)

它实际上是在数据库中执行的.并且数据库无法修改代码中的值.因此,您无法headIndex从数据库中增加代码本地值().(另外,作为@Kirk沃尔指出,这是非常不好的做法,修改一个选择这样的值a.选择应该只取/建立的东西,不会改变状态或产生副作用.)

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

headIndex += db.vwCustomizationHeaders.Count(ch => ch.ProductID == pID);
Run Code Online (Sandbox Code Playgroud)

注释掉的部分表明你也在构建一个vwCustomizationHeaders 列表,如下所示:

lst = (from xx in db.vwCustomizationHeaders
where xx.ProductID == pID
select new custHeader()
{
    SomeField = xx.SomeField,
    AnotherField = xx.SomeOtherField
    // etc.
});
Run Code Online (Sandbox Code Playgroud)

从那里你可以使用该lst对象来修改你的计数器:

headIndex += lst.Count();
Run Code Online (Sandbox Code Playgroud)