类似于“列号而非列名”,但我认为两者不同,因为前者是针对未命名的列,而我的列是命名的,只是我事先不知道列的名称。
首先,一些背景。我正在创建一个方法,将查询及其参数作为参数,然后运行查询(使用Dapper),并检查第一行第一列的值是否为1或0。它旨在作为数据库的通用验证器工作。
例如,用户可以输入一个查询,如果某个表中存在某个值,则在仅有的行的唯一列中返回1,否则返回0。这种方法的使用范围故意非常广泛,大部分工作都放在用户编写查询上(我还应该澄清,这种情况下的“用户”始终是另一个开发人员,并且使用是在调用此方法的代码中完成的,而不是在表单输入中完成的)。
我想要查询我的数据库并获取第一行第一列的值,而不知道列的名称。理想情况下(虽然我不确定在Dapper调用中是否可能实现这一点),我还希望强制结果中只有一行和一列。当我搜索时,我基于此帖子的第一个答案构建了我的初始解决方案,但发现为使其工作,我需要知道列的名称:
首先,一些背景。我正在创建一个方法,将查询及其参数作为参数,然后运行查询(使用Dapper),并检查第一行第一列的值是否为1或0。它旨在作为数据库的通用验证器工作。
例如,用户可以输入一个查询,如果某个表中存在某个值,则在仅有的行的唯一列中返回1,否则返回0。这种方法的使用范围故意非常广泛,大部分工作都放在用户编写查询上(我还应该澄清,这种情况下的“用户”始终是另一个开发人员,并且使用是在调用此方法的代码中完成的,而不是在表单输入中完成的)。
我想要查询我的数据库并获取第一行第一列的值,而不知道列的名称。理想情况下(虽然我不确定在Dapper调用中是否可能实现这一点),我还希望强制结果中只有一行和一列。当我搜索时,我基于此帖子的第一个答案构建了我的初始解决方案,但发现为使其工作,我需要知道列的名称:
var dict = connection.Query(query, parameters).ToDictionary(row => (string)row.VALUE);
if(dict.ElementAt(0).Value != 1){
//do stuff
}
我想过只需增加一个要求,让用户添加一个别名来命名第一列的某个固定值(在这种情况下,VALUE
),但如果有可能,我宁愿不让用户承担这个负担。
我的核心问题是:如何在不知道列名的情况下,使用 Dapper 从数据库中获取命名列的值?有人有什么想法吗?