当如何使用SqlDataReader
在互联网上的例子看,我发现的东西,如:转换SqlDataReader对象到LINQ表达
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