我有一个基于 Sql 查询返回动态结果的 WebApi 操作。目前使用以下函数来转换 IDataReader 工作正常,但它为每一行创建一个 Dictionary 对象。我想知道是否有更好的方法来做到这一点。
private IEnumerable ReadResult(IDataReader reader)
{
var names = new string[reader.FieldCount];
var values = new object[reader.FieldCount];
for (var i = 0; i < reader.FieldCount; i++)
{
names[i] = reader.GetName(i);
}
while (reader.Read())
{
reader.GetValues(values);
var record = names.ToDictionary(i => i, s => values[Array.IndexOf(names, s)]);
yield return record;
}
}