When working with collections in C#, enumeration and manipulation of lists are fundamental skills. This article will cover key concepts: displaying ordered data, enumerating backward, and systematically removing elements, with complete code examples.
1. Displaying the Order When Enumerating
Displaying the position of each element in an ordered list is a common requirement. However, C# uses zero-based indexing, which can be confusing for users. Here's how to adjust for 1-based indexing.
Code Example
using System; using System.Collections.Generic; class Program { static void Main() { List<string> countries = new List<string> { "China", "India", "USA", "Indonesia", "Pakistan", "Brazil", "Nigeria", "Bangladesh", "Russia", "Mexico" }; Console.WriteLine("Countries in Order:"); for (int i = 0; i < countries.Count; i++) { Console.WriteLine($"{i + 1}: {countries[i]}"); // 1-based index } } }
Output
Countries in Order: 1: China 2: India 3: USA 4: Indonesia 5: Pakistan 6: Brazil 7: Nigeria 8: Bangladesh 9: Russia 10: Mexico
2. Enumerating Backwards
Sometimes, you need to iterate through a list in reverse order. This requires starting at the last index and decrementing.
Code Example
using System; using System.Collections.Generic; class Program { static void Main() { List<string> countries = new List<string> { "China", "India", "USA", "Indonesia", "Pakistan", "Brazil", "Nigeria", "Bangladesh", "Russia", "Mexico" }; Console.WriteLine("\nCountries in Reverse Order:"); for (int i = countries.Count - 1; i >= 0; i--) { int displayIndex = countries.Count - i; // Adjusted for display Console.WriteLine($"{displayIndex}: {countries[i]}"); } } }
Output
Countries in Reverse Order: 1: Mexico 2: Russia 3: Bangladesh 4: Nigeria 5: Brazil 6: Pakistan 7: Indonesia 8: USA 9: India 10: China
3. Systematically Removing Elements from a List
Removing items from a list during iteration can be tricky because indexes shift. One solution is to iterate backward.
Code Example
using System; using System.Collections.Generic; class Program { static void Main() { List<string> countries = new List<string> { "China", "India", "USA", "Indonesia", "Pakistan", "Brazil", "Nigeria", "Bangladesh", "Russia", "Mexico" }; Console.WriteLine("\nRemoving countries with names shorter than 5 characters:"); for (int i = countries.Count - 1; i >= 0; i--) // Iterate backward { if (countries[i].Length < 5) { Console.WriteLine($"Removing: {countries[i]}"); countries.RemoveAt(i); } } Console.WriteLine("\nRemaining Countries:"); foreach (var country in countries) { Console.WriteLine(country); } } }
Output
Removing countries with names shorter than 5 characters: Removing: USA Removing: India Removing: China Remaining Countries: Indonesia Pakistan Brazil Nigeria Bangladesh Russia Mexico
4. Combining Operations: Displaying and Filtering
You can combine enumeration with filtering. For example, display countries longer than five characters in reverse order.
Code Example
using System; using System.Collections.Generic; class Program { static void Main() { List<string> countries = new List<string> { "China", "India", "USA", "Indonesia", "Pakistan", "Brazil", "Nigeria", "Bangladesh", "Russia", "Mexico" }; Console.WriteLine("\nFiltered and Reversed List:"); for (int i = countries.Count - 1; i >= 0; i--) { if (countries[i].Length > 5) { int displayIndex = countries.Count - i; Console.WriteLine($"{displayIndex}: {countries[i]}"); } } } }
Output
Filtered and Reversed List: 1: Mexico 2: Russia 3: Bangladesh 4: Nigeria 5: Pakistan 6: Indonesia
Key Takeaways
- Control with
for
loops: Use the loop index to manage display order and modify it for user-friendly 1-based indexing. - Iterate backward safely: When removing elements, reverse iteration prevents skipped or missed items.
- Flexibility with loops: Combine operations like filtering, enumeration, and ordering for custom requirements.
Top comments (0)