如何使用 LINQ 中的 Dynamic 处理 Dapper return 键值对
How to Deal With Dapper return Key Value pair with Dynamic from LINQ
我是 Dapper 的新手。让我解释一下我想要达到的目标。我有一个简单的查询,它从数据库返回列,我不想创建 Entity(属性) class 来填充数据。我想为此使用动态类型。下面是我的代码:
public dynamic GetABC(int year)
{
using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
{
string query = string.Format(@"SELECT * FROM ranking where YEAR(eventdate)='{0}') ORDER BY eventdate DESC, eventid ASC",year);
//return db.Query<RankingEntity>(query, commandType: System.Data.CommandType.Text).AsList();
var a = (IEnumerable<dynamic>)db.Query(query, null, null, true, null, CommandType.Text).ToList();
return a;
}
}
它 returns 我的键值对。如下所示:
有什么办法吗,我只是写了一个常用的方法来获取 List 作为 "Property" = "Value" 正如我们通常在使用任何实体 Class 时得到的那样。
我不确定它是否可以实现,但我希望了解它是否可能并希望在我们的应用程序中实现。
我可以通过在我不想要的 dapperrows 中实现循环来实现这一点。因为如果有 10000 行循环将迭代 10000 次。
提前致谢。
正如我提到的 DapperRow
是 Dapper 的内部 class,可以直接类型转换为 IDictionary<string,object>
,因为它实现了 IDictionary
接口。您所要做的就是:
var a = db.Query(query, null, null, true, null, CommandType.Text).Select(x => x as IDictionary<string,object>);
现在结果将是 IEnumerable<IDictionary<string,object>>
类型,可用于提取所有必需的信息,因为列名是键,相应的行值是 IEnumerable
中每个元素的值.
也检查一下,这可能也有效,但我不确定:
var a = (IEnumerable<IDictionary<string,object>>)db.Query(query, null, null, true, null, CommandType.Text);
我是 Dapper 的新手。让我解释一下我想要达到的目标。我有一个简单的查询,它从数据库返回列,我不想创建 Entity(属性) class 来填充数据。我想为此使用动态类型。下面是我的代码:
public dynamic GetABC(int year)
{
using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
{
string query = string.Format(@"SELECT * FROM ranking where YEAR(eventdate)='{0}') ORDER BY eventdate DESC, eventid ASC",year);
//return db.Query<RankingEntity>(query, commandType: System.Data.CommandType.Text).AsList();
var a = (IEnumerable<dynamic>)db.Query(query, null, null, true, null, CommandType.Text).ToList();
return a;
}
}
它 returns 我的键值对。如下所示:
有什么办法吗,我只是写了一个常用的方法来获取 List 作为 "Property" = "Value" 正如我们通常在使用任何实体 Class 时得到的那样。
我不确定它是否可以实现,但我希望了解它是否可能并希望在我们的应用程序中实现。
我可以通过在我不想要的 dapperrows 中实现循环来实现这一点。因为如果有 10000 行循环将迭代 10000 次。
提前致谢。
正如我提到的 DapperRow
是 Dapper 的内部 class,可以直接类型转换为 IDictionary<string,object>
,因为它实现了 IDictionary
接口。您所要做的就是:
var a = db.Query(query, null, null, true, null, CommandType.Text).Select(x => x as IDictionary<string,object>);
现在结果将是 IEnumerable<IDictionary<string,object>>
类型,可用于提取所有必需的信息,因为列名是键,相应的行值是 IEnumerable
中每个元素的值.
也检查一下,这可能也有效,但我不确定:
var a = (IEnumerable<IDictionary<string,object>>)db.Query(query, null, null, true, null, CommandType.Text);