views:

87

answers:

5

if i compiled below codes error return foreach loop how can i solve it?

Error:Error 1 foreach statement cannot operate on variables of type 'Sortlist.MyCalısan' because 'Sortlist.MyCalısan' does not contain a public definition for 'GetEnumerator' C:\Users\yusuf.karatoprak\Desktop\ExcelToSql\TestExceltoSql\Sortlist\Program.cs 46 13 Sortlist


        static void EskiMetodlaListele()
        {
            MyCalısan myCalısan = new MyCalısan();
            Calısan calisan = new Calısan();
            calisan.Ad = "ali";
            calisan.SoyAd = "abdullah";
            calisan.ID = 1;

            myCalısan.list.Add(calisan);

            foreach (Calısan item in myCalısan)
            {
                Console.WriteLine(item.Ad.ToString());
            }
        }


    }

   public class Calısan
    {
        public int ID { get; set; }
        public string Ad { get; set; }
        public string SoyAd { get; set; }

    }

   public class MyCalısan
    {
        public List<Calısan> list { get; set; }
        public MyCalısan()
        {
            list = new List();
        }
    }
A: 

You need to iterate over the collection you had defined - the list property:

myCalısan.list.Add(calısan);

foreach (Calısan item in myCalısan.list)
{
    Console.WriteLine(item.Ad.ToString());
}

However, if you want to iterate over myCalısan directly, make the MyCalısan class implement IEnumerable<Calısan>.

Oded
List is initialized in constructor MyCalısan()
Pavel Belousov
@Belousov Pavel - yeah noticed that after posting my answer. Thanks for the comment!
Oded
+6  A: 

Only write foreach (Calısan item in myCalısan.list).

Pavel Belousov
A: 

You should loop on MyCalisan.list; MyCalisan is just your class, and is not enumerable itself.

Mathias
+1  A: 

I recommend MyCalısan to define as Collection.

public class MyCalısan : Collection<Calısan>
{
}
this. __curious_geek
+1  A: 

a few issues need to be fixed before it will compile:

   public class MyCalısan{
public List<Calısan> list { get; set; }
public MyCalısan()
{
    list = new List<Calısan>();
}}

  foreach (Calısan item in myCalısan.list)
        {
            Console.WriteLine(item.Ad.ToString());
        }
David A Moss