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