Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Foreach statement does not contain public definition for GetEnumerator

I'm having a problem with a Windows Form application I'm building in C#. The error is stating "foreach statement cannot operate on variables of type 'CarBootSale.CarBootSaleList' because 'CarBootSale.CarBootSaleList' does not contain a public definition for 'GetEnumerator'".

I can't seem to understand what is causing this.

This is the code that is throwing up the error:

        List<CarBootSaleList> Sortcarboot = new List<CarBootSaleList>();          foreach (CarBootSale c in carBootSaleList)         {             if (c.Charity == "N/A")             {                 Sortcarboot.Add(carBootSaleList);                 textReportGenerator.GenerateAllReport(Sortcarboot, AppData.CHARITY);             }         } 

and this is the CarBootSaleList class where it's saying there isn't a GetEnumerator definition:

public class CarBootSaleList {      private List<CarBootSale> carbootsales;      public CarBootSaleList()     {         carbootsales = new List<CarBootSale>();     }      public bool AddCarBootSale(CarBootSale carbootsale)     {         bool success = true;         foreach (CarBootSale cbs in carbootsales)         {             if (cbs.ID == carbootsale.ID)             {                 success = false;             }         }         if (success)         {             carbootsales.Add(carbootsale);         }         return success;     }      public void DeleteCarBootSale(CarBootSale carbootsale)     {         carbootsales.Remove(carbootsale);     }      public int GetListSize()     {         return carbootsales.Count();     }      public List<CarBootSale> ReturnList()     {         return carbootsales;     }      public string Display()     {         string msg = "";          foreach (CarBootSale cbs in carbootsales)         {             msg += String.Format("{0}  {1}", cbs.ID, cbs.Location, cbs.Date);             msg += Environment.NewLine;         }         return msg;     } 
like image 508
Danny Avatar asked Mar 01 '13 13:03

Danny


1 Answers

Your CarBootSaleList class is not a list. It is a class that contain a list.

You have three options:

Make your CarBootSaleList object implement IEnumerable

or

make your CarBootSaleList inherit from List<CarBootSale>

or

if you are lazy this could almost do the same thing without extra coding

List<List<CarBootSale>> 
like image 84
Guish Avatar answered Oct 09 '22 20:10

Guish