Enumerable.Skip<TSource>(IEnumerable<TSource>, Int32) 方法
定义
跳过序列中指定数量的元素,然后返回剩余的元素。Bypasses a specified number of elements in a sequence and then returns the remaining elements.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TSource> ^ Skip(System::Collections::Generic::IEnumerable<TSource> ^ source, int count);
public static System.Collections.Generic.IEnumerable<TSource> Skip<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, int count);
static member Skip : seq<'Source> * int -> seq<'Source>
<Extension()>
Public Function Skip(Of TSource) (source As IEnumerable(Of TSource), count As Integer) As IEnumerable(Of TSource)
类型参数
- TSource
source
的元素类型。The type of the elements of source
.
参数
- source
- IEnumerable<TSource>
要从中返回元素的 IEnumerable<T>。An IEnumerable<T> to return elements from.
- count
- Int32
返回剩余元素前要跳过的元素数量。The number of elements to skip before returning the remaining elements.
返回
- IEnumerable<TSource>
一个 IEnumerable<T>,包含输入序列中指定索引后出现的元素。An IEnumerable<T> that contains the elements that occur after the specified index in the input sequence.
例外
source
为 null
。source
is null
.
示例
下面的代码示例演示如何使用 Skip 跳过已排序数组中指定数目的元素,并返回剩余的元素。The following code example demonstrates how to use Skip to skip a specified number of elements in a sorted array and return the remaining elements.
int[] grades = { 59, 82, 70, 56, 92, 98, 85 };
IEnumerable<int> lowerGrades =
grades.OrderByDescending(g => g).Skip(3);
Console.WriteLine("All grades except the top three are:");
foreach (int grade in lowerGrades)
{
Console.WriteLine(grade);
}
/*
This code produces the following output:
All grades except the top three are:
82
70
59
56
*/
' Create an array of integers that represent grades.
Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}
' Sort the numbers in descending order and
' get all but the first (largest) three numbers.
Dim lowerGrades As IEnumerable(Of Integer) =
grades _
.OrderByDescending(Function(g) g) _
.Skip(3)
' Display the results.
Dim output As New System.Text.StringBuilder("All grades except the top three are:" & vbCrLf)
For Each grade As Integer In lowerGrades
output.AppendLine(grade)
Next
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' All grades except the top three are:
' 82
' 70
' 59
' 56
注解
此方法是使用延迟执行实现的。This method is implemented by using deferred execution. 即时返回值是一个对象,该对象存储执行操作所需的所有信息。The immediate return value is an object that stores all the information that is required to perform the action. 此方法表示的查询在枚举对象之前不会执行,方法是直接调用其 GetEnumerator
方法,或者通过 foreach
在 Visual c # 中使用或 For Each
在 Visual Basic 中使用。The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator
method directly or by using foreach
in Visual C# or For Each
in Visual Basic.
如果 source
包含 count
的元素少于个, IEnumerable<T> 则返回空。If source
contains fewer than count
elements, an empty IEnumerable<T> is returned. 如果 count
小于或等于零,则会生成的所有元素 source
。If count
is less than or equal to zero, all elements of source
are yielded.
Take和 Skip 方法是函数补充。The Take and Skip methods are functional complements. 给定一个序列 coll
和一个整数 n
,串联的结果, coll.Take(n)
并 coll.Skip(n)
生成与相同的序列 coll
。Given a sequence coll
and an integer n
, concatenating the results of coll.Take(n)
and coll.Skip(n)
yields the same sequence as coll
.
在 Visual Basic 查询表达式语法中, Skip
子句转换为对的调用 Skip 。In Visual Basic query expression syntax, a Skip
clause translates to an invocation of Skip.