阅读IDataReader for WebApi的最佳方式

时间:2015-08-19 16:09:27

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

我有一个WebApi动作,它根据Sql查询返回动态结果。 目前使用以下函数转换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;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法(不知道这将如何与WebAPI一起使用,但仍值得一试):

var record = new ExpandoObject() as IDictionary<string, object>;
foreach(var name in names)
    record[name] = values[Array.IndexOf(names, name)];

yield return record;