Column Number rather than Column Name相似,但我相信这是不同的,因为那是针对未命名的列的,而我的列是命名的,我只是事先不知道名称。

首先,一些背景。我正在创建一种方法,该方法将查询及其参数作为参数,然后运行查询(使用Dapper)并检查第一行,第一列的值是1还是0。它旨在用作数据库。

例如,用户可以输入一个查询,如果某个表中存在某个值,则该查询在唯一行的唯一列中返回1,否则返回0。该方法的用途是非常广泛的,大部分工作都由用户编写查询(我还应该澄清,在这种情况下,“用户”始终是另一个开发人员,并且使用此代码的代码中完成了该操作,而不是表单输入)。

我想查询数据库并获取第一行第一列的值,而无需提前知道该列的名称。理想情况下(尽管我不确定在Dapper调用中是否可行),我还想要求结果中只有一行和一列。当我四处搜索时,我将最初的解决方案基于this帖子的第一个答案,但发现要使其正常工作,我需要知道列的名称:

var dict = connection.Query(query, parameters).ToDictionary(row => (string)row.VALUE);
if(dict.ElementAt(0).Value != 1){
    //do stuff
}


我只是想添加一个要求,即用户添加一个别名来命名第一列某个常量值(在这种情况下为VALUE),但是我不希望给用户增加负担。

最终,我的核心问题是:如何在不知道列名的情况下使用Dapper获得数据库中命名列的值?
有人有什么想法吗?

最佳答案

通过使用int作为通用Query方法中的类型,我已经成功地做到了:

int value = conn.Query<int>(sql,
commandType: CommandType.StoredProcedure).FirstOrDefault();


注意使用FirstOrDefault方法。因此,您从数据库获得0或任何值。

关于c# - 在不知道名称的情况下获取第一列的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38251000/

10-13 04:59