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.

异常

sourcenullsource 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
MsgBox(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. 在枚举对象之前,不会执行由此方法表示的查询,方法是:直接调用其 @no__t 0 方法,或者使用视觉C#对象中的 @no__t 或 @no__t 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 包含少于 @no__t 个元素,则返回空 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.

@No__t-0 和 @no__t 1 方法的功能是补充的。The Take and Skip methods are functional complements. 给定一个序列 coll 和一个整数 n,连接 coll.Take(n) 和 @no__t 3 的结果的顺序与 @no__t 的序列相同。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 查询表达式语法中,@no__t 子句转换为 Skip 的调用。In Visual Basic query expression syntax, a Skip clause translates to an invocation of Skip.

适用于

另请参阅