2

我有一个基于 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;
    }
}
4

1 回答 1

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;
于 2015-08-20T14:18:34.797 回答