微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查询结果不能被多次枚举

如何解决查询结果不能被多次枚举

尝试通过调用明确枚举结果ToList()

更改

foreach (var item in query)

foreach (var item in query.ToList())

解决方法

我正在使用实体框架(ef),并收到以下错误:

“查询结果不能多​​次枚举。”

我有一个包含ef数据上下文的存储库类。然后,我有一个控制器类(不要与MVC控制器混淆),它包含存储库的一个实例。到目前为止RadComboBoxItemData一切顺利…我在控制器上有一个搜索方法,该方法应该返回的数组,该数组用于填充Telerik
RadComboBox控件。

public RadComboBoxItemData[] Search(int id,string searchText)
{
    var query = context.Search(id,searchText);
    List<RadComboBoxItemData> result = new List<RadComboBoxItemData>();
    foreach (var item in query)
    {
        RadComboBoxItemData itemData = new RadComboBoxItemData();
        itemData.Text = ""; // assign some text here..;
        itemData.Value = ""; /*assign some value here..*/
        result.Add(itemData);
    }

    return result.ToArray();
}

当我调试代码时,我可以进入foreach循环,但是随后出现一条错误消息:

System.Data.Entity.dll中发生类型为’System.InvalidOperationException’的异常,但未在用户代码中处理

附加信息:查询结果不能被多次枚举。

我的实体使用现有存储过程的函数导入。

// EF repository method calling the function imported method on the data context.
public IEnumerable<SearchItem> Search(int id,string searchText)
{
    return this.entityContext.Search(id,searchText);
}

函数import Search调用存储的过程以返回的集合SearchItem

我有一种感觉,由于ef的影响,foreach循环无法迭代。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。