Результат запроса нельзя перечислить более одного раза

Я использую структуру сущности (ef) и получаю следующую ошибку:

«Результат запроса нельзя перечислить более одного раза».

У меня есть class репозитория, который содержит контекст данных ef. Затем у меня есть class controllerа (не путать с controllerами MVC), который содержит экземпляр хранилища. Пока что так хорошо … У меня есть метод поиска на controllerе, который должен возвращать массив RadComboBoxItemData , который используется для заполнения элемента управления TelCir RadComboBox.

 public RadComboBoxItemData[] Search(int id, string searchText) { var query = context.Search(id, searchText); List result = new List(); 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.InvalidOperationException» произошло в System.Data.Entity.dll, но не было обработано в коде пользователя

Дополнительная информация: результат запроса нельзя перечислить более одного раза.

Мой объект использует импорт функции существующей хранимой процедуры.

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

Функция import Search вызывает хранимое предисловие, чтобы вернуть коллекцию SearchItem .

У меня такое ощущение, что петля foreach не может перебираться из-за чего-то с ef.

Попробуйте явно перечислить результаты, вызвав ToList() .

+ Изменить

 foreach (var item in query) 

в

 foreach (var item in query.ToList()) 

Попробуйте заменить это

 var query = context.Search(id, searchText); 

с

 var query = context.Search(id, searchText).tolist(); 

и все будет хорошо работать.

если вы получаете такой тип ошибок, поэтому я предлагаю вам использовать хранимые данные proc как обычный список, а затем привязывать другие элементы управления, потому что я также получаю эту ошибку, поэтому я решил ее как это ex:

 repeater.DataSource = data.SPBinsReport().Tolist(); repeater.DataBind(); 

попробуй вот так

  • C # - код для заказа по свойству с использованием имени свойства в виде строки
  • Невозможно преобразовать lambda-выражение для ввода «string», потому что это не тип делегата
  • Как использовать LINQ Distinct () с несколькими полями
  • Метод count count vs Count ()?
  • 'Содержит ()' обходной путь с использованием Linq для Entities?
  • Тип узла выражения LINQ «ArrayIndex» не поддерживается в LINQ to Entities
  • C #: Как преобразовать список объектов в список одного свойства этого объекта?
  • Буквенно-цифровая сортировка с использованием LINQ
  • Использование Linq для группировки списка объектов в новый сгруппированный список списка объектов
  • Будет ли использование LINQ to SQL предотвращать SQL-инъекцию
  • C # Linq Group В нескольких столбцах
  • Interesting Posts

    Преобразование java.util.Properties в HashMap

    Как удалить текст заголовка из Android ActionBar?

    Можете ли вы перечислить аргументы ключевых слов, получаемые функцией?

    Тайм-аут сценария приложения Google ~ 5 минут?

    Windows 7 считает, что часовой пояс UTC + 1 в Амстердаме – это часовой пояс UTC + 10

    Обнаружение мобильных устройств в asp.net

    Правильное чтение строк комментариев во входном файле с использованием Fortran 90

    Java: В чем разница между автобоксингом и литьем?

    Как обрабатывать код, когда приложение убито путем прокрутки в Android?

    Когда вы должны использовать «друга» в C ++?

    Могу ли я сериализовать вложенные свойства в мой class за одну операцию с помощью Json.net?

    Как использовать свойства интерфейса с помощью CodeFirst

    Передача данных растровых изображений Android в действии с использованием Intent в Android

    Android; Геокодер, почему я получаю «услуга недоступна»?

    Лучшее место для подключения к базе данных

    Давайте будем гением компьютера.