将行从int转换为字符串

时间:2016-12-26 17:23:17

标签: c# sql

我正在尝试使用预定义数据库构建一个休息服务,问题是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; }
        }
    }
}

4 个答案:

答案 0 :(得分:3)

在将Int32转换为字符串之前,可以将值转换为Int32;

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

...或者您可以使用ToString()方法将值直接转换为字符串:

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

您不能值转换为字符串。

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:0)

根据您上次的编辑,我认为您正在寻找从字符串到整数类型的“转换”。

这样的转换是通过“解析”方法完成的。你可以这样做:

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

仅当dr [“idCliente”]保证是一个内部带有整数值的字符串时,它才有效。

编辑:

好的,我认为您正在尝试序列化方法的返回。您将无法使用方法签名返回字符串列表(它返回Clientes列表(public List<Cliente>),并且您的Cliente类具有整数和内部布尔值。

如果你想序列化它,你必须告诉我们你想要的输出格式是什么(JSON,XML),如果你只是想以一个关键的x值格式返回你的数据,值是一个字符串,您需要更改Cliente类,以便您的属性将变量转换为字符串(或者您可以将所有内容更改为字符串)。

答案 3 :(得分:0)

问题是,您尝试将字符串设置为 int 属性(public int IdCliente)。 如果你真的需要将它转换为字符串并将其作为对象列表返回,我建议你创建一个DTO。 示例:

public class ClienteDTO
{
    string idCliente;

    public string IdCliente { get; set; }
}

然后

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