无法更新列表中的特定项目

本文关键字:项目 更新 列表 | 更新日期: 2023-09-27 18:08:32

我有一个listView,其中包含具有属性IsFavourite的项目集合,我要做的是将此属性设置为false,对于在Where子句中发现的每个项目。

我所做的是:

myListView.Items.Cast<Event>().Where(x => x.MatchLeague == leagueName && x.MatchNation == nationName).Select(c => { c.IsFavourite = false; return c; }).ToList();

所以基本上我取所有具有特定leagueNamenationName的项目,在这样做之后,我试图为所有返回IsFavourite属性的项目设置为false,并将项目作为列表返回。

但是我得到了这个异常:

由于对象

的当前状态,操作无效。

我不知道我做错了什么,我甚至在过去使用这种类型的代码,都工作得很好,发生了什么?谢谢。

无法更新列表中的特定项目

您得到的异常是由于运行时对象的无效状态,因此最好的选择是像这样分解语句,并检查单个结果的输出,如下所示:

var r1 = myListView.Items.Cast<Event>();
var r2 = r1.Where(x => x.MatchLeague == leagueName && x.MatchNation == nationName);
var r3 = r2.Select(c => { c.IsFavourite = false; return c; });
var r4 = r3.ToList();

那可能对你有点帮助。

您可能还想检查这个SO答案

我不确定你的完整堆栈跟踪是什么,如果你正在处理的帖子,并正在接收最大的http集合键异常比你需要添加以下到你的web配置…

<appSettings>
    <add key="aspnet:MaxHttpCollectionKeys" value="10000" />
</appSettings>

然而,如果这是单独的Linq查询,通常我看到这种错误,当没有匹配的记录被发现改变IE:你没有找到任何记录与联赛名称和国家名称的组合。