在互联网上查看如何使用 SqlDataReader
的示例时,我发现以下内容:
var command = new SqlCommand( // initialize with query and connection...
var reader = command.ExecuteReader();
while(reader.Read())
{
var foo = reader["SomeColName"];
// etc
}
我能使用以下扩展方法吗:
public static IEnumerable<IDataReader> ToEnumerable(this IDataReader reader)
{
while (reader.Read())
yield return reader;
}
如何使用linq来执行查询?
如果我使用以下扩展方法,会有什么问题吗?如果我关心性能,应该使用第一个实现方法吗?
IDataRecord
而不是IDataReader
(继承),否则您将暴露Read
方法(因此用户可以调用该方法并弄乱结果集)。 - Caramiriel