C # Не удается неявно преобразовать тип «XXXX.Classes.Idophalen» в «System.Collections.IEnumerable» - PullRequest
0 голосов
/ 10 января 2019

Я создаю проект, в котором мне нужно выполнить запрос и получить этот ответ в списке в таблице данных.

Вот мой код: Main:

        public UserControlDetails(string Id)
    {
        InitializeComponent();
        var db = new Database();
        var QueriAnswer = db.GetArtikel(Id);
        DGVoedingswaarden.ItemsSource = QueriAnswer;
    }

db.GetArtikel (Id):

        public Idophalen GetArtikel(string id)
    {
        using (var conn = new MySqlConnection(ConnectionString))
        {

                conn.Open();
                var query = "SELECT naam FROM tb_product WHERE Id = '" + id + "'";
                var SelectArtikel = new MySqlCommand(query, conn);
                var reader = SelectArtikel.ExecuteReader();

                while (reader.Read())
                {
                    var Id = reader.GetString(0);
                    var artikel = new Idophalen(Id);
                    return artikel;
                }
        }
        return null;
    }

Idophalen (на английском языке: GetId)

   public  class Idophalen
{
    public string Id { get; set; }

    public Idophalen(string Id)
    {
        this.Id = Id;
    }
    public override string ToString()
    {
        return string.Format("{0}", Id);
    }


}

Так что проблема в том, что код (DGVoedingswaarden.ItemsSource = QueriAnswer; выдает ошибка: Cannot implicitly convert type 'XXXX.Classes.Idophalen' to 'System.Collections.IEnumerable'.. Поэтому я не знаю, как это исправить или что это значит. Другие посты в Stackoverflow мне не помогли, так что здесь мой случай .

Если вам нужно больше объяснений, пожалуйста, оставьте комментарий

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Свойство ItemsSource принимает только IEnumerable. GetArtikel() возвращает Idophalen, который не является экземпляром IEnumerable.

Вы можете создать список и добавить в него результат, но это действительно не хорошее решение. вам следует пересмотреть то, что вы пытаетесь сделать, правдоподобно.

В любом случае, это должно заставить работать:

var QueriAnswer = db.GetArtikel(Id);
DGVoedingswaarden.ItemsSource = new List<Idophalen>() { QueriAnswer };
0 голосов
/ 10 января 2019

Ваш метод GetArtikel возвращает один Idophalen. Свойство ItemsSource для ItemsControl может быть установлено только на IEnumerable, например List<Idophalen>. Таким образом, вы можете создать список, содержащий только один объект, возвращенный из базы данных:

DGVoedingswaarden.ItemsSource = new List<Idophalen>(1) { QueriAnswer };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...