c# - 在不知道名称的情况下获取第一列的值

标签 c# .net oracle dapper

类似于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 作为类型成功地做到了这一点:

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

注意 FirstOrDefault 方法的使用。所以您从数据库中得到 0 或任何值。

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

相关文章:

c# - 如何在指定时间执行指定任务

c# - BindingSource 和跨线程异常

java - 甲骨文11g : Pass array as input parameter to an oracle stored procedure using simple jdbc call

c# - SQL 和 C# 中两个日期计算之间的日期差异产生不同的结果

c# - 如何使用 Selenium 和 C# 捕获整个页面截图

c# - 这个 VB.NET 代码是如何计算的?

c# - 不同线程访问 MemoryStream

c# - Environment.TickCount 是不够的

java - 违反唯一约束 - 调试

xml - Temenos T24 如何存储数据