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