Skip to Content
C# Cookbook
book

C# Cookbook

by Stephen Teilhet, Jay Hilyard
January 2004
Beginner to intermediate
864 pages
22h 18m
English
O'Reilly Media, Inc.
Content preview from C# Cookbook

3.27. Implementing Nested foreach Functionality in a Class

Problem

You need a class that contains an array of objects; each of these objects in turn contains an array of objects. You want to use a nested foreach loop to iterate through all objects in both the outer and inner arrays in the following manner:

foreach (SubSet aSubSet in Set)
{
    foreach (Item i in aSubSet)
    {
        // Operate on Item objects contained in the innermost object collection 
        //  SomeSubSet, which in turn is contained in another outer collection
        //   called Set
    }
}

Solution

Implement IEnumerable on the top-level class as usual, but also implement IEnumerable on each of the objects returned by the top-level enumeration. The following class set contains an ArrayList of SubGroup objects, and each SubGroup object contains an ArrayList of Item objects:

using System; using System.Collections; //----------------------------------------- // // The top-level class // //----------------------------------------- public class Set : IEnumerable { //CONSTRUCTORS public Set( ) {} //FIELDS private ArrayList setArray = new ArrayList( ); //PROPERTIES public int Count { get{return(setArray.Count);} } //METHODS public IEnumerator GetEnumerator( ) { return(new SetEnumerator(this)); } public int AddGroup(string name) { return(setArray.Add(new SubGroup(name))); } public SubGroup GetGroup(int setIndex) { return((SubGroup)setArray[setIndex]); } //NESTED ITEMS public class SetEnumerator : IEnumerator { //CONSTRUCTORS public SetEnumerator(Set theSet) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C# Cookbook

C# Cookbook

Joe Mayo
C# Cookbook, 2nd Edition

C# Cookbook, 2nd Edition

Jay Hilyard, Stephen Teilhet
ASP.NET Cookbook

ASP.NET Cookbook

Michael A Kittel, Geoffrey T. LeBlond

Publisher Resources

ISBN: 0596003390Supplemental ContentCatalog PageErrata