Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将DapperRow转换为字典<;字符串,字符串>;_C#_.net_.net Core_Dapper - Fatal编程技术网

C# 如何将DapperRow转换为字典<;字符串,字符串>;

C# 如何将DapperRow转换为字典<;字符串,字符串>;,c#,.net,.net-core,dapper,C#,.net,.net Core,Dapper,我有一个返回IEnumerable和Dapper行的方法。 但我试图在不将数据类型转换到特定类的情况下访问数据,结果得到空值。 假设您正在连接到SQL数据库 public List<IDictionary<string, object>> DapperSelect(string connectionString, string query, object parameters) { using (var connection = new

我有一个返回IEnumerable和Dapper行的方法。

但我试图在不将数据类型转换到特定类的情况下访问数据,结果得到空值。

假设您正在连接到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();
        }
    }
public List DapperSelect(字符串连接字符串、字符串查询、对象参数)
{
使用(var连接=新的SqlConnection(connectionString))
{
var result=connection.Query(查询,参数).ToList();
返回结果。选择(x=>(IDictionary)x.ToList();
}
}

我不认为您应该将结果转换为
IDictionary
我不认为这有您想要的效果,不是字典中的每一项都是字符串,它可以是bool、int、double等等

但是如果你坚持的话,你可以试着做一些类似的事情

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

但我不推荐

比所有这些更好的是,使用dapper,您可以始终强类型地键入从SQL返回的结果,因此

connection.Query(查询,参数).ToList()

你会写信吗

connection.Query(查询,参数).ToList()

类似这样的代码:

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

有争吵。作为列的名称,foo是Dictionary类型。

有没有办法返回列表?我认为这并没有达到您想要的效果,不是Dictionary中的每一项都是字符串,它可以是bool、int、double等等。。。您可以尝试执行如下操作:result.Select(x=>((IDictionary)x).ToDictionary(ks=>ks.Key,vs=>vs.ToString()).ToList();但那真的很糟糕。您也可以始终强类型从dapper返回的结果,因此您可以编写connection.Query(Query,parameters.ToList(),而不是connection.Query(Query,parameters.ToList())