У меня есть метод, который возвращает средство чтения данных. Обычно я бы обернул использование вокруг средства чтения данных, чтобы оно было хорошо утилизировано после того, как я его повторю. Проблема в том, что я решил использовать средство чтения данных с помощью Linq, а это означает, что отложенное выполнение приводит к тому, что средство чтения удаляется раньше. Существует ли правильный шаблон для использования и удаления средства чтения данных с помощью 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)
});
}