无法将“DapperRow”类型的对象转换为“System.String”类型

Joh*_*ohn 6 c# dapper

我正在使用 Dapper 访问数据库对象。

所以这一行

Console.Write(string.Join(System.Environment.NewLine, results));
Run Code Online (Sandbox Code Playgroud)

给我

{DapperRow, VALUE_A = 'Y', VALUE_B = 'Y'}
Run Code Online (Sandbox Code Playgroud)

但我想访问或打印这些值,例如

DapperRow, 
VALUE_A = 'Y'
VALUE_B = 'Y'
Run Code Online (Sandbox Code Playgroud)

但我收到“System.InvalidCastException:无法使用以下代码将类型'DapperRow'的对象转换为类型'System.String'”。我尝试使用 foreach 循环遍历此列表。

using (var conn = new OracleConnection("Password=xxxxx;Persist Security Info=True;User ID=xxxxx;Data Source=xxxxx"))
{
// dapper adds an extension method to the connection for querying
string sql = "SELECT X, Y FROM Z WHERE ABC = 123";
var results = conn.Query(sql).ToList();
Console.Write(string.Join(System.Environment.NewLine, results));

    foreach (string value in results)
    {
    Console.WriteLine("> {0}",value);
    }
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 4

实际上这给了我我想要的结果..

using (var conn = new OracleConnection("Password=xxxxx;Persist Security Info=True;User ID=xxxxxxx;Data Source=xxxxxx"))
{
string sql = "SELECT X, Y FROM Z WHERE ABC = 123";
var orderDetail = conn.Query(sql).FirstOrDefault();

    foreach (var pair in orderDetail)
    {
        Console.WriteLine("{0} = {1}", pair.Key, pair.Value);
    }
}

Output: 
VALUE_A = 'Y'
VALUE_B = 'Y'
Run Code Online (Sandbox Code Playgroud)

然后通过类似的东西我可以获得返回值“Y”。

if (pair.Key == "VALUE_B")
{
Console.WriteLine("Val {0}", pair.Value);
}
Run Code Online (Sandbox Code Playgroud)