C# Cancel DataServiceCollection:此IEnumerable仅支持单个枚举
关于我今天在下文中提出的上一个问题 我需要帮助编写一些代码来取消客户端上的更改,而无需重新加载数据。我所做的唯一尝试失败如下:C# Cancel DataServiceCollection:此IEnumerable仅支持单个枚举,c#,wpf,wcf-data-services,C#,Wpf,Wcf Data Services,关于我今天在下文中提出的上一个问题 我需要帮助编写一些代码来取消客户端上的更改,而无需重新加载数据。我所做的唯一尝试失败如下: private IEnumerable<TheEntity> _data; 我认为我可以清除数据并重新加载缓存的私有字段。不幸的是,我得到了一个错误: 此IEnumerable只支持单个枚举。我希望这一次可以解决,但以防万一,如果有人(如我)偶然发现此问题:)。真正的问题是我的代码访问IEnumerable集合中数据的方式。在您的示例(从提供的链接)中,该
private IEnumerable<TheEntity> _data;
我认为我可以清除数据并重新加载缓存的私有字段。不幸的是,我得到了一个错误:
此IEnumerable只支持单个枚举。我希望这一次可以解决,但以防万一,如果有人(如我)偶然发现此问题:)。真正的问题是我的代码访问IEnumerable集合中数据的方式。在您的示例(从提供的链接)中,该方法返回异步结果,之前您正在对其执行
.ToList
您已经更新了正确的实现,但一旦收集到,您将直接将其分配给数据源。为了解决这个问题,我首先收集了对变量的响应,然后将其转换为。ToList
。一旦我有了本地列表,我就可以分配/遍历任意多的时间。而对于,由于linq的延迟绑定特性,一旦调用它就无法向后/向前遍历。(在DataServiceCollection
中可能存在一些内部实现问题)
我希望这能帮助别人。对不起,我不明白。“我首先收集了一个变量的响应,然后将其转换为.ToList”是什么意思?什么是“收集对变量的响应”?
private void DoCancel()
{
_dataSource.Clear(true);
_dataSource.Load(data);
}