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

前端之家收集整理的这篇文章主要介绍了通过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);
原文链接:https://www.f2er.com/csharp/94645.html

猜你在找的C#相关文章