3

我的代码如下所示;

 using (IDbConnection cnn = new SqlConnection(GetConnectionString()))
{
    var result = cnn.QuerySingle(sql, parameters);

    return result;
}

它在类内部的方法中,但这无关紧要。QuerySingle 据说返回一个动态类型,但我以前从未使用过这个。当我调试这段代码时,它返回的是这样的;

{{DapperRow, Tcode = 'eeeee', Hashedpw = 'NF886jMDl5imyMj0ThDIxA==', Salt = 'Z+HHq6Rt60FPnAf80Lg4Dg=='}}

我应该怎么读这个?它们是键值对吗,因为其背后的逻辑不起作用,它不像列表或数组那样起作用。我完全迷路了,不知道这会返回什么。我只需要这些值,而不是 dapperrow、tcode、hashedpw 和 salt。所以基本上,我需要的回报是

['eeeee', 'NF886jMDl5imyMj0ThDIxA==','Z+HHq6Rt60FPnAf80Lg4Dg=='] 

谁能帮我吗?

4

2 回答 2

5

目前您使用的是弱类型QuerySingle(),它将始终返回键值对结果。如果您只想检索值,您应该使用这样的强类型 QuerySingle()

var result= connection.QuerySingle<TYPE>(sql, parameters);

编辑:如果我说得对

例如,您可以定义类

public class SomeClass 
{
  public string Salt {get;set;}
  public string TCode {get;set;}
  public string Hashedpw {get;set;}
}

如果你在这种情况下返回多个结果,你可以在这样的代码中使用它QuerySingle<SomeClass>,显然你必须像这样使用QuerySingle<List<SomeClass>>()

希望这会帮助你。

于 2019-10-19T11:35:40.587 回答
1

查看此链接以获取有关 QuerySingle 的帮助

如果你创建另一个类,像这样......

public class TestClass
{
    public string Tcode { get; set; }
    public string Hashedpw { get; set; }
    public string Salt { get; set; }
}

...并将您的 QuerySingle 调用更改为这样的...

var result = cnn.QuerySingle<TestClass>(sql, parameters);

...一个电话,如...

Debug.WriteLine(result.Tcode);

...会导致eeeee您的调试窗口退出

这有帮助吗?

于 2019-10-19T12:23:28.630 回答