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)