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

标签 c# .net .net-core dapper

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

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

最佳答案

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

关于c# - 如何将 DapperRow 转换为 Dictionary<string,string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51972188/

相关文章:

c# - LINQ 中按日期差异排序

c# - Microsoft.Http.HttpClient,在重定向时正确发送 HTTP 身份验证参数

c# - 使用匿名方法调用 WPF Dispatcher

asp.net - 当您更改字符串资源时,至少需要部署多少?

c# - 如何将枚举全局序列化为字符串(而不是每个枚举中的属性)?

c# - LINQ 从多个连接中获取具有最大日期的记录

c# - 带有图像和填充效果的 WPF 进度条

c# - 如何增加 UWP 中的枢轴标题高度?

razor - 在 Razor 页面 OnPost 模型方法中触发显示模态弹出窗口

asp.net-core - 如何在类中注入(inject)强类型 signalR 集线器 [ASP CORE 2.2]