Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

C# LINQ Take() Method: ดึงองค์ประกอบแรก N ตัวจาก Sequence

เมธอด 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.)