如何从 Dapper ExecuteReader() 检索数据并将其转换为 int

时间:2021-04-30 13:24:52

标签: c# sql-server dapper

我正在使用 Dapper,我想从具有特定条件的列中获取所有值,然后将其转换为整数,但我无法访问这些值。

| NumAdultos | NumCrianças |     
|     1      |     0       |    <-----------
|     2      |     1       |    <----------- I want to get all these values;
|     1      |     0       |    <-----------

代码:

int clienteAlojadoNum = 0;

using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.ConnectionString("Hotel")))
{
    // How do I convert this value?
    var adultos = connection.ExecuteReader($"SELECT NumAdultos, NumCrianças FROM dbo.Registos WHERE DataEntrada = @DataEntrada and Estado = 'Alojado' ", new { DataEntrada = hoje });

    // I know this is wrong but I don't how to access them or convert them
    clienteAlojadoNum = Convert.ToInt32(adultos);
}

1 个答案:

答案 0 :(得分:1)

public class Data {
 public int NumAdultos { get; set; }
 public int NumCrianças {get; set; }
}
int clienteAlojadoNum = 0;
using(IDbConnection connection = new SqlConnection(Helper.ConnectionString("Hotel"))) {

  var results = connection.Query<Data>($"SELECT NumAdultos, NumCrianças FROM dbo.Registos WHERE DataEntrada = @DataEntrada and Estado = @Estado", new {
    DataEntrada = hoje, 
    Estado = "Alojado"
  });

  clienteAlojadoNum = results.Select(r => r.NumAdultos + r.NumCrianças).Sum();

}