簡體   English   中英

將行從int轉換為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM