title: Someone please clarify this IEnumerable<T> business for my MVC App?
body: <p>OK so here we go, one of my classes called Product is implemented like this:</p>
  
  <pre><code>namespace DomainModel.Entities
  {
      public class Product
      {
          public int ProductID { get; set; }
          public string Name { get; set; }
          public string Description { get; set; }
          public decimal Price { get; set; }
  
      }
  }
  </code></pre>
  
  <p>I want to add an IEnumerable to hold a list of values I can later iterate through in my view. How on earth do I do this and why is MSDN sample code so confusing (this doesn't help me at all and I have a feeling it's much simpler than this)?? (SEE BELOW)</p>
  
  <pre><code>using System;
  using System.Collections;
  
  public class Person
  {
      public Person(string fName, string lName)
      {
          this.firstName = fName;
          this.lastName = lName;
      }
  
      public string firstName;
      public string lastName;
  }
  
  public class People : IEnumerable
  {
      private Person[] _people;
      public People(Person[] pArray)
      {
          _people = new Person[pArray.Length];
  
          for (int i = 0; i &lt; pArray.Length; i++)
          {
              _people[i] = pArray[i];
          }
      }
  
          IEnumerator IEnumerable.GetEnumerator()
          {
              return new PeopleEnum(_people);
          }
  }
  
  public class PeopleEnum : IEnumerator
  {
      public Person[] _people;
  
      // Enumerators are positioned before the first element
      // until the first MoveNext() call.
      int position = -1;
  
      public PeopleEnum(Person[] list)
      {
          _people = list;
      }
  
      public bool MoveNext()
      {
          position++;
          return (position &lt; _people.Length);
      }
  
      public void Reset()
      {
          position = -1;
      }
  
      public object Current
      {
          get
          {
              try
              {
                  return _people[position];
              }
              catch (IndexOutOfRangeException)
              {
                  throw new InvalidOperationException();
              }
          }
      }
  }
  
  class App
  {
      static void Main()
      {
          Person[] peopleArray = new Person[3]
          {
              new Person("John", "Smith"),
              new Person("Jim", "Johnson"),
              new Person("Sue", "Rabon"),
          };
  
          People peopleList = new People(peopleArray);
          foreach (Person p in peopleList)
              Console.WriteLine(p.firstName + " " + p.lastName);
  
      }
  }
  
  /* This code produces output similar to the following:
   *
   * John Smith
   * Jim Johnson
   * Sue Rabon
   *
   */
  </code></pre>