[英]Converting row from int to string
我正在嘗試使用預定義數據庫構建rest服務,問題是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
{
(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; }
}
}
}
您可以先將值轉換為Int32,然后再將Int32轉換為字符串。
string IdCliente = Convert.ToInt32(dr["idCliente"]).ToString();
...或者您可以使用ToString()方法將值直接轉換為字符串:
IdCliente = dr["idCliente"].ToString();
您不能將值強制轉換為字符串。
嘗試這個:
select new Cliente
{
IdCliente = (string)dr["idCliente"];
};
根據您的上一次編輯,我認為您正在尋找從字符串到整數類型的“轉換”。
此類轉換是通過“解析”方法完成的。 您將執行以下操作:
select new Cliente
{
IdCliente = int.Parse(dr["idCliente"]);
};
僅在保證dr [“ idCliente”]為內部帶有整數值的字符串時,該方法才有效。
編輯:
好的,我認為您正在嘗試序列化方法的返回值。 您將無法使用方法簽名返回字符串列表(它返回客戶端列表( public List<Cliente>
Cliente public List<Cliente>
),並且您的Cliente類內部包含ints和boolean。
如果要序列化,則必須告訴我們要將其輸出的格式是什么(JSON,XML),如果只是嘗試以鍵x值格式(值是字符串)返回數據,則需要更改Cliente類,以便您的屬性將變量轉換為字符串(或者可以將所有內容更改為字符串)。
問題是,您正在嘗試將字符串設置為int屬性( public int IdCliente
)。 如果確實需要將DTO轉換為字符串並將其作為對象列表返回,則建議您創建DTO。 例:
public class ClienteDTO
{
string idCliente;
public string IdCliente { get; set; }
}
接着
select new ClienteDTO
{
IdCliente = dr["idCliente"]
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.