2016-12-26 80 views
0

我想用預定義數據庫構建一個rest服務,問題是IdCliente是一個int類型,我想返回一個字符串列表。int從行轉換爲字符串

下面是代碼,我試圖建立

public List<Cliente> ListarClientes() 
{ 
    try 
    { 
     var dt = (new DAL.DbHelper()).GetResultSet("SELECT idCliente, nomeUtilizador, password, tipoUtilizador, ativo FROM Cliente"); 
     var qCli = from dr in dt.AsEnumerable() 
        select new Cliente 
        { 
         (string)IdCliente = dr["idCliente"] 
        }; 
    } 
    catch (Exception) 
    { 
     throw; 
    } 
    finally 
    { 

    } 
} 

IdCliente是Int,我就這樣做慘遭失敗。問題是數據庫充滿了數據,所以這將是一個問題,重新做一遍..任何幫助嗎?

編輯:

我想這和我沒有得到任何錯誤

public List<Cliente> ListarClientes() 
{ 
    try 
    { 
     var dt = (new DAL.DbHelper()).GetResultSet("SELECT idCliente, nomeUtilizador, password, tipoUtilizador, ativo FROM Cliente"); 
     var qCli = from dr in dt.AsEnumerable() 
        select new Cliente 
        { 
         IdCliente = Convert.ToInt32(dr["idCliente"]), 
         NomeUtilizador = dr["nomeUtilizador"].ToString(), 
         Password = dr["password"].ToString(), 
         TipoUtilizador = Convert.ToInt32(dr["tipoUtilizador"]), 
         Ativo = Convert.ToBoolean(dr["ativo"]) 
        }; 
     IdCliente.ToString(); 
     Ativo.ToString(); 
    } 

但是,這是正確的?

我的原始數據

public class Cliente 
    { 
     int idCliente; 
     string nomeUtilizador; 
     string password; 
     int tipoUtilizador; 
     bool ativo; 

     [DataMember(Order = 0)] 
     public int IdCliente 
     { 
      get { return idCliente ; } 
      set { idCliente = value; } 
     } 

     [DataMember(Order = 1)] 
     public string NomeUtilizador 
     { 
      get { return nomeUtilizador; } 
      set { nomeUtilizador = value; } 
     } 

     [DataMember(Order = 2)] 
     public string Password 
     { 
      get { return password; } 
      set { password = value; } 
     } 

     [DataMember(Order = 3)] 
     public int TipoUtilizador 
     { 
      get { return tipoUtilizador; } 
      set { tipoUtilizador = value; } 
     } 

     [DataMember(Order = 4)] 
     public bool Ativo 
     { 
      get { return ativo; } 
      set { ativo = value; } 
     } 
    } 
} 
+0

您的代碼返回一個列表,而不是一個列表:你想回到什麼? –

回答

3

你可以在轉換的Int32爲字符串前的值轉換爲Int32;

string IdCliente = Convert.ToInt32(dr["idCliente"]).ToString(); 

...或者你可以使用toString()方法的值轉換爲直接的字符串:

IdCliente = dr["idCliente"].ToString(); 

不能價值爲字符串,但。

+0

不能使用任何,但我編輯,這是唯一的我沒有錯誤,但我不知道它是否是正確的方式。 –

+0

什麼是不正確的方式?如上所述,您不能*將非字符串值轉換爲字符串,但可以使用ToString()方法將任何值轉換爲字符串。 – mm8

1

試試這個:

select new Cliente 
{ 
    IdCliente = (string)dr["idCliente"]; 
}; 
+0

我還有CS0029 C#不能隱式地將類型'string'轉換爲'int'錯誤。 –

+0

我已經編輯了我的答案 - 如果'dr [「idCliente」]'它已經是一個字符串,那麼你可以通過 –

+0

這樣的方式來分配作業,請問我的編輯是否正確? –

0

基於上次編輯,我認爲你正在尋找一個「轉換」從一個字符串轉換爲整數類型。

像這樣的轉換是通過「解析」方法完成的。你會做這樣的事情:

select new Cliente 
{ 
    IdCliente = int.Parse(dr["idCliente"]); 
}; 

如果博士[「idCliente」]是保證裏面的整數值的字符串,它纔會工作。

編輯:

好吧,我想你想你的序列化方法的返回。你將無法使用你的方法簽名返回一個字符串列表(它返回一個Clientes列表(public List<Cliente>),而你的Cliente類有ints和布爾值)

如果你想序列化它,你必須告訴我們你希望輸出的格式是什麼(JSON,XML),如果你只是想以x鍵值格式返回你的數據,值是一個字符串,你需要改變你的Cliente類,以便你的屬性投射您的變量字符串(或者你可以改變一切,以字符串)。

+0

我的IdCliente是一個整數,我想將其轉換爲字符串以便從我的客戶端返回字符串列表。我編輯了我的原始Cliente類 –

+0

我編輯了我的答案,看一看 –

0

的問題是,你想一個設置成INT財產(public int IdCliente)。 如果您確實需要將其轉換爲字符串並將其作爲對象列表返回,我建議您創建一個DTO。 例子:

public class ClienteDTO 
{ 
    string idCliente; 

    public string IdCliente { get; set; } 
} 

然後

select new ClienteDTO 
{ 
    IdCliente = dr["idCliente"] 
};