สมมติว่ามี Array 2 มิติ ซึ่งมีข้อมูล ดังนี้
int[,] scores = { { 1, 90 }, { 2, 78 }, { 3, 85 }, { 4, 92 }, { 5, 88 } };
จริงมัน ตัวคะแนนสอบเก็บแยกตาม Id / Score อย่างคนที่ 1 จะได้ 90 คะแนนเก่งจัง แล้วผมมีโจทย์ว่าจะหาคนที่คะแนนเกิน 85 เราเขียน Code ได้ดังนี้
using System; using System.Linq; class Program { static void Main() { int[,] scores = { { 1, 90 }, { 2, 78 }, { 3, 85 }, { 4, 92 }, { 5, 88 } }; var highScorers = from score in scores.Cast<int>().Select((value, index) => new { value, index }) group score by score.index / scores.GetLength(1) into g where g.ElementAt(1).value > 85 select new { StudentID = g.ElementAt(0).value, Score = g.ElementAt(1).value }; foreach (var student in highScorers) { Console.WriteLine($"Student ID: {student.StudentID}, Score: {student.Score}"); } } }
หลักๆ จะเป็นการแปลง Multidimensional Array มาเป็น โครงสร้างในรูปแบบ (value, index) แล้วมา Grouping ดู Score ว่าต้องมากกว่า 85 ให้สร้าง object ใหม่ที่มี StudentID / Score
ผลลัพธ์
Student ID: 1, Score: 90
Student ID: 4, Score: 92
Student ID: 5, Score: 88
เอาจริงๆ ทำ DTO แล้วเล่นกับข้อมูลง่ายกว่าเยอะครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.