List.Select จะรับ List และฟังก์ชันเงื่อนไข (selection as function) โดยจะประเมินฟังก์ชันเงื่อนไขกับสมาชิกแต่ละตัว หากฟังก์ชันคืนค่า true จะเก็บสมาชิกนั้นไว้ใน List ใหม่ หากคืนค่า false จะถูกคัดทิ้งไป
=List.Select(list as list, selection as function) as list
=List.Select(list as list, selection as function) as list
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| list | list | Yes | List ที่ต้องการกรอง | |
| selection | function | Yes | ฟังก์ชันเงื่อนไขที่คืนค่า true/false (มักใช้ ‘each …’) |
กรอง List ของตัวเลข เพื่อเลือกเก็บเฉพาะตัวเลขคู่
เมื่อ List มี Record (เช่น Table.ToRecords) สามารถเลือกเฉพาะ Record ที่คอลัมน์ [Status] = 'Active'
let Numbers = {1, -3, 4, 9, -2}, PositiveNumbers = List.Select(Numbers, each _ > 0) in PositiveNumberslet
Numbers = {1, -3, 4, 9, -2},
PositiveNumbers = List.Select(Numbers, each _ > 0)
in
PositiveNumbers
{1, 4, 9}
let Fruits = {"Apple", "Banana", "Apricot", "Grape"}, StartsWithA = List.Select(Fruits, each Text.StartsWith(_, "A")) in StartsWithAlet
Fruits = {"Apple", "Banana", "Apricot", "Grape"},
StartsWithA = List.Select(Fruits, each Text.StartsWith(_, "A"))
in
StartsWithA
{"Apple", "Apricot"}
let dates = { #date(2025, 12, 20), // Saturday #date(2025, 12, 21), // Sunday #date(2025, 12, 22), // Monday #date(2025, 12, 27) // Saturday }, weekendDates = L…let
dates = {
#date(2025, 12, 20), // Saturday
#date(2025, 12, 21), // Sunday
#date(2025, 12, 22), // Monday
#date(2025, 12, 27) // Saturday
},
weekendDates = List.Select(
dates,
each Date.DayOfWeek(_, Day.Monday) >= 5
)
in
weekendDates
{#date(2025, 12, 20), #date(2025, 12, 21), #date(2025, 12, 27)}
let customers = { [Name = "Alice", Status = "Active", Purchases = 150], [Name = "Bob", Status = "Inactive", Purchases = 200], [Name = "Carol", Status = "Active"…let
customers = {
[Name = "Alice", Status = "Active", Purchases = 150],
[Name = "Bob", Status = "Inactive", Purchases = 200],
[Name = "Carol", Status = "Active", Purchases = 90],
[Name = "Dave", Status = "Active", Purchases = 120]
},
activeHighValue = List.Select(
customers,
each [Status] = "Active" and [Purchases] > 100
)
in
activeHighValue
{
[Name = "Alice", Status = "Active", Purchases = 150],
[Name = "Dave", Status = "Active", Purchases = 120]
}
List.Select ใช้กรองสมาชิกใน List ส่วน Table.SelectRows ใช้กรองแถวใน Table หลักการทำงานคล้ายกันแต่ใช้กับ Structure ของข้อมูลที่ต่างกัน
List.Select ใช้สำหรับกรองสมาชิกใน List โดยประเมินฟังก์ชันเงื่อนไขกับแต่ละสมาชิก เก็บเฉพาะสมาชิกที่คืนค่า true
ที่เจ๋งคือ List.Select ทำให้โค้ดอ่านง่ายมากเมื่อต้องทำความสะอาดข้อมูล เช่น กรองตัวเลขบวก ลบช่องว่าง หรือเลือกเฉพาะสมาชิกที่ตรงเงื่อนไข ใช้ได้กับ List ที่มีประเภทข้อมูลใดก็ได้
ส่วนตัวผมชอบใช้ List.Select คู่กับ each เพื่อเขียน filter condition แบบสั้นๆ สำหรับข้อมูลที่ซับซ้อน เช่นกรองแต่เฉพาะ Records ที่มี Status = “Active” ได้เลย ทำให้โค้ดสะอาดและอ่านง่ายมากครับ