2015-08-03 3 views
0

Ниже у меня есть метод, который я пытаюсь создать. Общая цель метода - создать список, открыть базу данных в SQL и преобразовать эту информацию в строку. Проблема, хотя у меня есть, возвращает все данные. Я понимаю, для метода работы вам нужен оператор возврата какой-то, однако, когда я пытаюсь вернуть список, он твердит мнеКак вернуть список в C#

Не может неявно преобразовать тип «System.Collections.Generic.List (пространство имен) .MyHome «до» (имен) .MyHome

Так что мой вопрос к вам все это, я могу вернуть список, или мне придется создать еще одну переменную, чтобы вернуться, или я пытаюсь вернуть неправильные вещи полностью?

Ниже приведен метод, над которым я работаю. Для объяснения этот метод использует созданный мной класс, который содержит учетные данные для данных, которые я пытаюсь получить.

private static MyHome GetUserDataFromMyHome(string username) 
    { 
     List<MyHome> myHomeInformation = new List<MyHome>(); 
     using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.MyHomeConnectionString)) 
     { 
      SqlCommand command = connection.CreateCommand(); 
      command.CommandText = @"SELECT USER_NAME, EMAIL, FIRST_NAME, LAST_NAME, TRAVELER_UID FROM DATA_BASE"; 
      connection.Open(); 
      SqlDataReader reader = sqlError.ExecuteReader(); 

      while (reader.Read()) 
      { 
       MyHome userInformation = new MyHome(); 
       foreach (MyHome item in myHomeInformation) 
       { 
        userInformation.myHomeUserName = Utilities.FromDBValue<string>(reader["USER_NAME"]); 
        userInformation.myHomeEmail = Utilities.FromDBValue<string>(reader["EMAIL"]); 
        userInformation.myHomeFirstName = Utilities.FromDBValue<string>(reader["FIRST_NAME"]); 
        userInformation.myHomeLastName = Utilities.FromDBValue<string>(reader["LAST_NAME"]); 
        userInformation.myHomeTravelerUID = Utilities.FromDBValue<string>(reader["TRAVELER_UID"]); 
        myHomeInformation.Add(userInformation); 
       } 
      } 
     } 
     return myHomeInformation; 
    } 

Вот класс, который содержит учетные данные:

class MyHome : IEnumerable<MyHome> 
{ 
    public string myHomeUserName { get; set; } 
    public string myHomeEmail { get; set; } 
    public string myHomeFirstName { get; set; } 
    public string myHomeLastName { get; set; } 
    public string myHomeTravelerUID { get; set; } 
} 
+1

Также создайте объект 'userInformation' внутри цикла. В противном случае это будет тот же объект с несколькими копиями. –

+5

Почему 'MyHome' наследует от' IEnumerable'? –

+0

@RonBeyer в исследовании Я нашел IEnumerable, чтобы помочь, поэтому я попробовал, и это не сработало. Я просто забыл удалить его, я считаю, – user4970927

ответ

9

Заменить

private static MyHome GetUserDataFromMyHome(string username) 

с

private static List<MyHome> GetUserDataFromMyHome(string username) 

Возвращаемый тип должен быть список объектов и не просто объект

+0

Perfect. Посмотрев на вас и вернувшись к моему, имеет смысл, что это должен быть список, а не просто объект. – user4970927

1

A List<MyHome> не является MyHome. Если вы хотите, чтобы ваша функция вернула List<MyHome>, объявите ее как таковой.

1

Вы должны объявить возвращаемый тип функции списком MyHome.

private static List<MyHome> GetUserDataFromMyHome(string username) 

В противном случае все, что вызывает это, ожидает получения одного экземпляра MyHome.

Смежные вопросы