c# - 阅读 WebApi 的 IDataReader 的最佳方式

标签 c# asp.net-web-api json.net sqldatareader idatareader

我有一个基于 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/

相关文章:

c# - 如何在 web api 2 中正确实现异步

c# - 使用 OData 的 Web Api HelpPage 不工作

c# - 无法为媒体类型 'application/x-www-form-urlencoded' 生成示例

c# - 将 JSON 反序列化为泛型,其中集合属性名称根据类型而变化

c# outlook 删除所有约会

c# - Active Directory 中联机的计算机列表

c# - 起订量设置返回 null

c# - 如果我们将数据存储在 .txt 文件中,如何验证和返回数据?

entity-framework - 使用显式包含时,即使在 ProxyCreation false 之后,也会出现 JSON 序列化 Entity Framework 自引用循环错误

c# - 如何根据深度嵌套的数组属性拆分大型 JSON 文件?