我有一个返回数据读取器的方法。通常我会在数据阅读器周围包裹一个 using ,以便在我遍历它之后很好地处理它。问题是我选择使用 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)
});
}