public class FixedEnumerable<T> : IEnumerable<T>
{
private IList<T> _materialized;
private readonly IEnumerable<T> _enumerable;
public FixedEnumerable(IEnumerable<T> enumerable)
{
_enumerable = enumerable;
}
public FixedEnumerable(IList<T> list)
{
_materialized = list;
}
public IEnumerator<T> GetEnumerator()
{
if (_materialized == null)
_materialized = _enumerable.ToList();
return _materialized.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public static implicit operator FixedEnumerable<T>(List<T> list)
{
return new FixedEnumerable<T>(list);
}
}
namespace System.Linq
{
public static class FixedEnumerableExtentions
{
public static FixedEnumerable<T> ToFixed<T>(this IEnumerable<T> enumerable)
{
return new FixedEnumerable<T>(enumerable);
}
}
}
Fork
Enumerable that does not give multiple side effects on multiple enumerations - @adam.lith Tuesday 30, 2011 3:39 PM
0 Feedback
You must log in before you can give any feedback
You must log in before you can post a comment


760
2




Mark 'eager' tag as 'like'
Mark 'eager' tag as 'ignore'