List.FirstN จะคืน List ใหม่ที่มีสมาชิก N ตัวแรกจาก List ต้นฉบับ สามารถระบุจำนวน N ด้วยตัวเลข หรือกำหนดเป็นฟังก์ชันเงื่อนไขเพื่อให้ดึงสมาชิกที่ตรงเงื่อนไขจากจุดเริ่มต้นไปเรื่อยๆ จนกว่าเงื่อนไขจะไม่เป็นจริง
=List.FirstN(list as list, countOrCondition as any) as any
=List.FirstN(list as list, countOrCondition as any) as any
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| list | list | Yes | List ที่ต้องการดึงสมาชิก | |
| countOrCondition | number | function | Yes | จำนวนสมาชิกที่ต้องการดึง (number) หรือฟังก์ชันเงื่อนไขแบบ each (เช่น each _ > 5) |
เลือกรายการสินค้า 5 อันดับแรกที่มีมูลค่าสูงสุด (ใช้ List.Sort ก่อน)
ถ้าข้อมูลมีบรรทัดที่ไม่ใช่หัวตาราง สามารถใช้ List.Skip หรือ List.FirstN มาช่วย
ดึงข้อมูลเพียงไม่กี่รายการแรกมาแสดงเพื่อตรวจสอบความถูกต้องเบื้องต้น
let Numbers = {1, 2, 3, 4, 5}, FirstTwo = List.FirstN(Numbers, 2) in FirstTwolet
Numbers = {1, 2, 3, 4, 5},
FirstTwo = List.FirstN(Numbers, 2)
in
FirstTwo
{1, 2}
let Numbers = {10, 20, 5, 30}, FirstGreaterThan5 = List.FirstN(Numbers, each _ > 5) in FirstGreaterThan5let
Numbers = {10, 20, 5, 30},
FirstGreaterThan5 = List.FirstN(Numbers, each _ > 5)
in
FirstGreaterThan5
{10, 20}
let TextLines = {"Header: Product", "Header: Price", "Data: Apple", "Data: 100"}, Headers = List.FirstN(TextLines, each Text.StartsWith(_, "Header")) in Headerslet
TextLines = {"Header: Product", "Header: Price", "Data: Apple", "Data: 100"},
Headers = List.FirstN(TextLines, each Text.StartsWith(_, "Header"))
in
Headers
{"Header: Product", "Header: Price"}
List.First ดึงแค่สมาชิก 1 ตัวแรก (คืนค่าเดี่ยว) ส่วน List.FirstN ดึง N ตัวแรก (คืนค่า List)
มันจะคืน List ทั้งหมด ไม่มี error ถ้า List มี 3 ตัว แล้วขอ 10 ตัว มันจะคืน 3 ตัวทั้งหมด
ใช่ แบบเงื่อนไขหยุดทีแรกที่เจอค่าไม่ตรง ส่วนแบบนับต้องนับครบ N ตัว
List.Select ดึงทั้ง List ที่ตรงเงื่อนไข ส่วน List.FirstN หยุดตรงแรกที่ไม่ตรง ประหยัด performance
List.FirstN ใช้สำหรับดึงสมาชิกตัวแรกจากลิสต์ในสองโหมดการทำงาน: แบบนับจำนวน (ระบุตัวเลข) หรือแบบเงื่อนไข (ใช้ each)
ส่วนตัวผมใช้ List.FirstN บ่อยๆ ตอนต้องการตัวอย่างข้อมูล หรือตัดหัวตารางออก เพราะมันดึงแค่ตัวแรกที่ตรงเงื่อนไขเท่านั้น ไม่ได้ดึงทั้ง List ทำให้ประหยัด performance ได้นะ 😎
อันที่เจ๋งคือ ถ้าใช้เงื่อนไข มันจะหยุดตรงที่เจอค่าไม่ตรง เลยไม่ต้องประมวลผลทั้ง List