У меня есть метод, который возвращает устройство чтения данных. Обычно я бы обернул использование вокруг считывателя данных так, чтобы он удобно располагался после того, как я прокрутил его. Проблема в том, что я решил использовать устройство чтения данных с помощью Linq, а это означает, что отсроченное выполнение заставляет читателя удаляться рано. Есть ли правильный образец для использования и утилизации устройства чтения данных с использованием Linq без необходимости создания полной коллекции его содержимого?Как лучше очистить SQLDataReader при использовании linq
using (System.Data.SqlClient.SqlDataReader reader = CallStoredProcedure())
{
return reader.Cast<System.Data.Common.DbDataRecord>().Select(rec => new ObjectModel.CollectorSummaryItem()
{
CollectorID = (int)rec[0],
Name = rec.IsDBNull(1) ? null : rec.GetString(1),
Information = rec.IsDBNull(2) ? null : rec.GetString(2)
});
}
Вы попробовали просто делегировать чтение? Создайте метод, который принимает IDataRecord и создает ваш объект. Сформировать список и вернуть этот список? – Sinaesthetic