通过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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |