如何将DapperRow转换为Dictionary <string,string>

时间:2018-08-22 17:26:04

标签: c# .net .net-core dapper dapper-simplecrud

我有一个返回Dapper Row的IEnumerable的方法。 enter image description here

但是我试图访问数据而不将其类型转换为特定的类,并且我得到了空值。 enter image description here

2 个答案:

答案 0 :(得分:2)

假设您正在连接到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();

答案 1 :(得分:0)

类似这样的东西:

var foo = db.Query(
                        "MySp",
                        new { parameters },
                        commandType: CommandType.StoredProcedure)
                    .ToDictionary(
                        row => (int) row.Id,
                        row => (string) row.Name);

带行。是列的名称,而foo是Dictionary类型。