เมธอด Take(int count) ใน LINQ ใช้ดึงองค์ประกอบแรก count ตัวจาก Sequence ใดๆ (Array, List, IEnumerable) โดยไม่แก้ไขข้อมูลต้นฉบับ
ตัวอย่าง: ดึง Top 2 จาก Array เรียงลำดับ Descending
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
int[] prod = { 290, 340, 129, 540, 456, 898, 765, 789, 345 };
// เรียง Descending แล้ว Take 2 อันแรก
IEnumerable topTwo = prod
.OrderByDescending(x => x)
.Take(2);
foreach (int val in topTwo)
{
Console.WriteLine(val);
}
}
}
ผลลัพธ์
898 789
เมธอดที่เกี่ยวข้อง
| เมธอด | คำอธิบาย |
|---|---|
Take(n) | ดึง n ตัวแรก |
Skip(n) | ข้าม n ตัวแรก ดึงส่วนที่เหลือ |
TakeWhile(predicate) | ดึงจนกว่าเงื่อนไขจะเป็น False |
SkipWhile(predicate) | ข้ามจนกว่าเงื่อนไขจะเป็น False |
TakeLast(n) | ดึง n ตัวท้าย (C# 8.0+ / .NET Core 3.0+) |
ตัวอย่างเพิ่มเติม
var numbers = Enumerable.Range(1, 100); // 1..100
// Pagination: Page 3, PageSize 10
var page3 = numbers.Skip(20).Take(10); // 21-30
// TakeWhile
var smallNumbers = numbers.TakeWhile(n => n < 10); // 1-9
// Chaining
var result = numbers
.Where(n => n % 2 == 0) // Even numbers
.OrderByDescending(n => n)
.Take(5); // Top 5 Even
คำเตือน
Take(n)ที่ n > Count ของ Sequence จะส่งคืนทั้ง Sequence (ไม่โยน Exception)Take(0)ส่งคืน Empty Sequence- Deferred Execution - Query จะ Execute ตอน Enumerate (foreach, ToList, etc.)