How to loop through a collection that supports IEnumerable?
How t开发者_Python百科o loop through a collection that supports IEnumerable?
A regular for each will do:
foreach (var item in collection)
{
// do your stuff
}
Along with the already suggested methods of using a foreach
loop, I thought I'd also mention that any object that implements IEnumerable
also provides an IEnumerator
interface via the GetEnumerator
method. Although this method is usually not necessary, this can be used for manually iterating over collections, and is particularly useful when writing your own extension methods for collections.
IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
// Do something with sequenceEnum.Current.
}
}
A prime example is when you want to iterate over two sequences concurrently, which is not possible with a foreach
loop.
or even a very classic old fashion method
using System.Collections.Generic;
using System.Linq;
...
IEnumerable<string> collection = new List<string>() { "a", "b", "c" };
for(int i = 0; i < collection.Count(); i++)
{
string str1 = collection.ElementAt(i);
// do your stuff
}
maybe you would like this method also :-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}
You might also try using extensions if you like short code:
namespace MyCompany.Extensions
{
public static class LinqExtensions
{
public static void ForEach<TSource>(this IEnumerable<TSource> source, Action<TSource> actor) { foreach (var x in source) { actor(x); } }
}
}
This will generate some overhead, for the sake of having stuff inline.
collection.Where(item => item.IsReady).ForEach(item => item.Start());
精彩评论