取消DataServiceCollection:此IEnumerable仅支持单个枚举

时间:2013-11-20 18:41:37

标签: c# wpf wcf-data-services

今天在以下link

中提到我之前提出的问题

我需要帮助来编写一些代码来取消客户端上的更改而无需重新加载数据。我做过的唯一尝试是失败的,如下所示:

private IEnumerable<TheEntity> _data;

然后:

private void DoCancel()
{
    _dataSource.Clear(true);
    _dataSource.Load(data);
}

我以为我可以清除数据并重新加载缓存的私有字段。不幸的是,我收到错误:

此IEnumerable仅支持一个枚举。

1 个答案:

答案 0 :(得分:1)

我希望这次能解决这个问题,但万一有人偶然发现这个问题,就像我一样:)。真正的问题是我的代码从IEnumerable集合访问数据的方式。在您的示例中(来自提供的链接),该方法返回异步结果,之前您正在对其进行.ToList<T>

您已更新以更正实施,但一旦收集,您将直接将其分配给数据源。为了解决这个问题,我首先收集了对变量的响应,然后将其转换为.ToList<T>。一旦我有本地列表,我就可以分配/遍历我想要的时间。然而由于linq的延迟绑定性质,一旦调用它就无法向后/向前遍历。(DataServiceCollection可能存在一些内部实现问题。)

我希望这会对某人有所帮助。