繁体   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