我正在使用 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)
实际上这给了我我想要的结果..
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)