为什么IQueryable中没有LongTake
和LongSkip
方法?
e.g。我们有LongCount
方法
我应该为LongTake
和LongSkip
方法使用哪种替代代码?
答案 0 :(得分:1)
不管亚历山大的公平评论,我也问自己,鉴于Skip是一种扩展方法,并且您可以自己查看代码,您可以轻松修改它并自己编写LongSkip
:
public static IEnumerable<TSource> LongSkip<TSource>(this IEnumerable<TSource> source, long count) {
if (source == null) throw Error.ArgumentNull("source");
return SkipIterator<TSource>(source, count);
}
static IEnumerable<TSource> SkipIterator<TSource>(IEnumerable<TSource> source, long count) {
using (IEnumerator<TSource> e = source.GetEnumerator()) {
while (count > 0 && e.MoveNext()) count--;
if (count <= 0) {
while (e.MoveNext()) yield return e.Current;
}
}
}