跳過並採取

Skip 方法返回一個集合,該集合不包括源集合開頭的多個專案。排除的專案數是作為引數給出的數字。如果集合中的專案少於引數中指定的專案,則返回空集合。

Take 方法返回一個集合,該集合包含源集合開頭的許多元素。包含的專案數是作為引數給出的數字。如果集合中的專案少於引數中指定的專案,則返回的集合將包含與源集合相同的元素。

var values = new [] { 5, 4, 3, 2, 1 };

var skipTwo        = values.Skip(2);         // { 3, 2, 1 }
var takeThree      = values.Take(3);         // { 5, 4, 3 }
var skipOneTakeTwo = values.Skip(1).Take(2); // { 4, 3 }
var takeZero       = values.Take(0);         // An IEnumerable<int> with 0 items

.NET 小提琴現場演示

Skip 和 Take 通常一起用於分頁結果,例如:

IEnumerable<T> GetPage<T>(IEnumerable<T> collection, int pageNumber, int resultsPerPage) {
    int startIndex = (pageNumber - 1) * resultsPerPage;
    return collection.Skip(startIndex).Take(resultsPerPage);
}

警告: LINQ to Entities 僅支援跳過有序查詢 。如果你試圖在沒有排序的情況下使用 Skip,你將得到一個 **NotSupportedException,**其中包含“方法’跳過’僅支援 LINQ to Entities 中的排序輸入。方法’OrderBy’必須在方法’Skip’之前呼叫。”