加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:47:10 所属栏目:百科 来源:网络整理
导读:有没有一个很好的方法来枚举只有C#中的集合的一个子集?也就是说,我收集了大量的对象(例如1000),但是我只想枚举250到340的元素.有没有一个很好的方法来获取枚举器的集合的一个子集,没有使用另一个集合? 编辑:应该提到这是使用.NET Framework 2.0. 解决方法
有没有一个很好的方法来枚举只有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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读