2016-12-26 3 views
0

Я пытаюсь создать службу отдыха с базой данных предопределений, и проблема в том, что IdCliente является типом int и я хочу вернуть список строк.Преобразование строки из 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 и я терпеть неудачу на этом. Проблема в том, что db заполнен данными, поэтому было бы проблемой сделать это заново. Любая помощь, пожалуйста?

редактировать:

я попытался это и я не получаю ошибки

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(); 

Вы не можете бросить значение в строку, хотя.

+0

couldnt использовать любые, но я редактирую, и это было единственное, что у меня нет ошибок, но я не знаю, правильно ли это. –

+0

Что не так? Как уже упоминалось, вы не можете * придать * строковое значение для строки, но вы можете * конвертировать * любое значение в String с использованием метода ToString(). – mm8

1

Попробуйте это:

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

У меня все еще есть CS0029 C# Невозможно неявно преобразовать тип 'string' в 'int' с этим. –

+0

Я отредактировал свой ответ - Если 'dr [" idCliente "]' это уже строка, то вы можете передать задание таким образом –

+0

можете ли вы рассказать мне, верно ли мое редактирование? –

0

На основании вашего последнего редактирования, я думаю, что вы ищете «преобразование» из строки в целочисленный тип.

Конверсии, подобные этому, выполняются с помощью методов «разбора». Вы бы сделать что-то вроде:

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

Он будет работать только тогда, когда д-р [ «idCliente»] гарантированно быть строкой с целочисленным значением внутри.

EDIT:

Хорошо, я думаю, что вы пытаетесь сериализации возвращение вашего метода. Вы не сможете вернуть список строк с использованием вашей сигнатуры метода (он возвращает список клиентов (public List<Cliente>), а ваш класс Cliente имеет int и boolean внутри.

Если вы хотите его сериализовать, вы должны скажите нам, какой формат вывода вы хотите (JSON, XML), если вы просто пытаетесь вернуть свои данные в формате значения ключа x, а значение является строкой, вам нужно изменить свой класс Cliente, чтобы ваши свойства были изменены ваши переменные в строке (или вы можете изменить все в строку).

+0

My IdCliente - целое число, и я хочу преобразовать его в строку, чтобы вернуть список строк из моего клиента. Я отредактировал с моим исходным классом Cliente –

+0

. Я внесли изменения в свой ответ, взгляните –

0

проблема заключается в том, что вы пытаетесь установить строку в свойстве INT (public int IdCliente). Я предлагаю вам создать DTO, если вам действительно нужно преобразовать его в строку и вернуть его как список объектов. Пример:

public class ClienteDTO 
{ 
    string idCliente; 

    public string IdCliente { get; set; } 
} 

, а затем

select new ClienteDTO 
{ 
    IdCliente = dr["idCliente"] 
}; 
Смежные вопросы