C# foreach语句不能对类型为';杰兰特';因为';杰兰特';不包含对';GetEnumerator';

C# foreach语句不能对类型为';杰兰特';因为';杰兰特';不包含对';GetEnumerator';,c#,foreach,public,C#,Foreach,Public,你好,我尝试创建一个名为“gerant”的对象 class gerant { public double CIN_GERANT, NUM_TEL_GERANT, MOBILE_GERANT; public string NOM_GERANT, PRENOM_GERANT, ADRESSE__GERANT, MAIL_GERANT, VILLE_GERANT; public int CP_GERANT; public DateTime DATE_GERANT;

你好,我尝试创建一个名为“gerant”的对象

 class gerant
{
    public double CIN_GERANT, NUM_TEL_GERANT, MOBILE_GERANT;
    public string NOM_GERANT, PRENOM_GERANT, ADRESSE__GERANT, MAIL_GERANT, VILLE_GERANT;
    public int CP_GERANT;
    public DateTime DATE_GERANT;

    public gerant(double _Cin_gerant, string _Nom_Gerant, string _Prenom_Gerant, string _Adresse_Gerant, double _Num_Tel_Gerant, string _Mail_Gerant, double _Mobile_Gerant, int _cp_gerant, string _ville_gerant, DateTime _date_gerant)
    {
        this.CIN_GERANT = _Cin_gerant;
        this.NOM_GERANT = _Nom_Gerant;
        this.PRENOM_GERANT = _Prenom_Gerant;
        this.ADRESSE__GERANT = _Adresse_Gerant;
        this.NUM_TEL_GERANT = _Num_Tel_Gerant;
        this.MAIL_GERANT = _Mail_Gerant;
        this.MOBILE_GERANT = _Mobile_Gerant;
        this.CP_GERANT = _cp_gerant;
        this.VILLE_GERANT = _ville_gerant;
        this.DATE_GERANT = _date_gerant;
    }

    public gerant getinfogerant()
    {
        gerant gerer = null;
        string sql_gerant = "select CIN,NOM,PRENOM,ADRESS_PERSONNEL,NUM_TEL,MAIL,MOBILE,CP_GERANT,VILLE_GERANT,DATE_CIN from GERANT";
        connexion connect = new connexion();
        OleDbConnection connection = connect.getconnexion();
        // try
        //{
        connection.Open();
        OleDbCommand cmd = new OleDbCommand(sql_gerant, connection);
        OleDbDataReader reader = cmd.ExecuteReader();
        if (reader.Read())
        {
            gerer = new gerant(reader.GetDouble(0),
                reader.GetString(1),
                reader.GetString(2),
                reader.GetString(3),
            reader.GetDouble(4),
                reader.GetString(5),
                reader.GetDouble(6),
                reader.GetInt32(7),
                reader.GetString(8),
                reader.GetDateTime(9)
                );

        }
        connection.Close();
        return gerer;

    }
}
但是当我尝试用gerant填充我的组合框时,我尝试插入这个代码

 foreach(Modele.gerant ligne in liste_gerant)
        {

        }
但是我犯了这个错误 foreach语句无法对“gerant”类型的变量进行操作,因为“gerant”不包含“GetEnumerator”的公共定义


我如何解决这个问题?

根据您的评论。gerant类不是任何类型的集合,您的getinfogerant不会返回集合


所以,问题是您试图迭代单个值。

从您在getinfogerant中使用的查询中,我猜您希望它获得数据库中的所有“gerant”,而不仅仅是一个


但是现在你只返回第一个。您应该将其返回类型更改为List,并将if(reader.Read())转换为while循环以填充列表,然后在末尾返回整个列表。

什么是
Modele.gerant
?这是一门课还是一个领域?它是什么类型的?什么是列表?这是一门课还是一个领域?它的类型是什么?如何定义
liste\u gerant
?如果您试图在组合框下拉列表中使用单个对象,那么您的
getinfogerant
将返回单个对象。您需要在liste\u gerant上实现
IEnumerable
接口。如果您希望我们帮助您,您需要发布
liste\u gerant
的定义。
getinfogerant
只返回单个项目,而不是列表,因此您无法迭代它。因为它只有一项,所以不需要for-each。是的,这就是如何获取所有“gerant”:public List getinfogerant(){List gerer=new List();OleDbDataReader=cmd.ExecuteReader();而(reader.Read()){gerer.Add(new gerant)(reader.GetDouble(0)、reader.GetString(1)、reader.GetString(2)、reader.GetString(3)、reader.GetDouble(4)、reader.GetString(5)、reader.GetDouble(6)、reader.GetInt32(7)、reader.GetString(8)、reader.GetDateTime(9));}返回GEER;}但如何将数据库中的第一行添加为combobox中出现的默认值?我记得combobox具有selectedindex属性,您可以将其设置为0,或者将selectedvalue属性设置为列表的第一项。