【发布时间】:2016-03-14 19:30:16
【问题描述】:
在网上查看有关如何使用 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-方法(因此用户可以调用该方法并弄乱结果集)。
标签: c# performance linq sqldatareader