Dapper Querylist возвращаемый тип - PullRequest
3 голосов
/ 19 октября 2019

Мой код выглядит так;

 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=='] 

Кто-нибудь может мне помочь?

Ответы [ 2 ]

4 голосов
/ 19 октября 2019

В настоящее время вы используете слабый тип 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>>().

Надеюсь, это поможет вам.

1 голос
/ 19 октября 2019

Закажите эту ссылку для получения справки по 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 выходу из вашего окна отладки

Это помогает?

...