我有一个基于 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;
}
}
最佳答案
您可以尝试这种方法(不完全知道这将如何与 WebAPI 一起发挥作用,但仍然值得一试):
var record = new ExpandoObject() as IDictionary<string, object>;
foreach(var name in names)
record[name] = values[Array.IndexOf(names, name)];
yield return record;
关于c# - 阅读 WebApi 的 IDataReader 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100683/