无法更新列表

时间:2016-09-23 11:16:23

标签: c# linq

我有一个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,并返回这些项目作为清单。

但我得到了这个例外:

  

由于对象的当前状态

,操作无效

我不知道我做错了什么,我甚至在过去使用这种类型的代码并且一切运作良好,会发生什么?感谢。

2 个答案:

答案 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答案。