C# 如何将DapperRow转换为字典<;字符串,字符串>;
我有一个返回IEnumerable和Dapper行的方法。 但我试图在不将数据类型转换到特定类的情况下访问数据,结果得到空值。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
假设您正在连接到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())