C# · 12月 31, 2021

通过C#中的集合的子集枚举?

有没有一个很好的方法来枚举只有C#中的集合的一个子集?也就是说,我收集了大量的对象(例如1000),但是我只想枚举250到340的元素.有没有一个很好的方法来获取枚举器的集合的一个子集,没有使用另一个集合?

编辑:应该提到这是使用.NET Framework 2.0.

解决方法 尝试以下 var col = GetTheCollection();var subset = col.Skip(250).Take(90);

或更一般地

public static IEnumerable<T> GetRange(this IEnumerable<T> source,int start,int end) { // Error checking removed return source.Skip(start).Take(end – start);}

EDIT 2.0解决方案

public static IEnumerable<T> GetRange<T>(IEnumerable<T> source,int end ) { using ( var e = source.GetEnumerator() ){ var i = 0; while ( i < start && e.MoveNext() ) { i++; } while ( i < end && e.MoveNext() ) { yield return e.Current; i++; } } }IEnumerable<Foo> col = GetTheCollection();IEnumerable<Foo> range = GetRange(col,250,340);