C#无法将类型“ XXXX.Classes.Idophalen”隐式转换为“ System.Collections.IEnumerable”

时间:2019-01-10 13:06:55

标签: c# wpf

我制作了一个项目,需要运行查询并将该答案以列表的形式发送到Datagrid中。

这是我的代码: 主要:

        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 :(得分:0)

您的GetArtikel方法返回一个IdophalenItemsSource的{​​{1}}属性只能设置为ItemsControl之类的IEnumerable。因此,您可以创建一个仅包含从数据库返回的单个对象的列表:

List<Idophalen>

答案 1 :(得分:-1)

ItemsSource属性仅接受IEnumerable。 GetArtikel()返回一个Idophalen,它不是IEnumerable实例。

您可以创建一个列表并将结果添加到列表中,但这确实不是一个好的解决方案。您应该重新考虑您的尝试是合理的。

无论如何,这应该可以使它工作:

var QueriAnswer = db.GetArtikel(Id);
DGVoedingswaarden.ItemsSource = new List<Idophalen>() { QueriAnswer };