首页 > 解决方案 > 如何将 DapperRow 转换为字典

问题描述

我有一个返回 IEnumerable 与 Dapper Row 的方法。 在此处输入图像描述

但是我试图访问数据而不将其类型转换为特定的类,并且我得到了 null 值。 在此处输入图像描述

标签: c#.net.net-coredapper

解决方案


假设您正在连接到 SQL 数据库

    public List<IDictionary<string, object>> DapperSelect(string connectionString, string query, object parameters)
    {
        using (var connection = new SqlConnection(connectionString))
        {
            var result = connection.Query(query, parameters).ToList();

            return result.Select(x => (IDictionary<string, object>)x).ToList();
        }
    }

我不认为你应该将你的结果转换为IDictionary<string, string>我认为它没有你想要的效果,不是字典中的每个项目都会是一个字符串,它可能是 bool、int、double 等。 ..

但如果你坚持,你可以尝试做类似的事情

result.Select(x => ((IDictionary<string, object>)x).ToDictionary(ks => ks.Key, vs => vs.ToString())).ToList();

但我不推荐它。

比这一切更好的是,使用 dapper,您始终可以强输入从 SQL 返回的结果,因此而不是

connection.Query(query, parameters).ToList();

你会写

connection.Query<YOURTYPE>(query, parameters).ToList();


推荐阅读