我有一个listView,其中包含具有属性IsFavourite
的项集合,我正在尝试做的是将此属性设置为false,对于{{1}中找到的每个项目条款。
我做的是:
Where
基本上我采取了具有某个myListView.Items.Cast<Event>().Where(x => x.MatchLeague == leagueName && x.MatchNation == nationName).Select(c => { c.IsFavourite = false; return c; }).ToList();
和leagueName
的所有项目,在这之后,我尝试将所有项目设置为nationName
属性返回false,并返回这些项目作为清单。
但我得到了这个例外:
由于对象的当前状态
,操作无效
我不知道我做错了什么,我甚至在过去使用这种类型的代码并且一切运作良好,会发生什么?感谢。
答案 0 :(得分:0)
我不确定您的完整堆栈跟踪是什么,如果您正在处理帖子并且正在接收最大http收集密钥异常,而不是将以下内容添加到您的Web配置中...
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="10000" />
</appSettings>
但是,如果这仅与Linq查询有关,通常我会在没有找到匹配的记录来改变IE时看到这种错误:你没有找到任何带有leaguename和nationname组合的记录。
答案 1 :(得分:0)
你得到的异常是因为运行时对象的状态无效,所以你最好的选择就是像这样分解你的语句,并检查各个结果的输出,如下所示:
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();
这可能对你有所帮助。
您可能还想查看this SO答案。