跳過並採取
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
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’之前呼叫。”