วิธี C # ToDictionary

Withi C Todictionary



ฟังก์ชัน ToDictionary ใน C# เป็นฟังก์ชันส่วนขยาย LINQ ที่ช่วยให้คุณสามารถแปลงการรวบรวมข้อมูลให้เป็นพจนานุกรมซึ่งมีวิธีการที่ชัดเจนและใช้งานได้จริงในการแมปเอนทิตีกับคีย์ที่แตกต่างและค่าที่เกี่ยวข้อง ต้องใช้อาร์กิวเมนต์ 2 รายการ ได้แก่ ตัวแทนหรือนิพจน์แลมบ์ดา 2 รายการ รายการหนึ่งสำหรับเลือกคีย์และอีกรายการหนึ่งสำหรับเลือกค่าสำหรับทุกออบเจ็กต์ในคอลเล็กชัน ในบทความนี้ เราจะใช้ตัวอย่างโค้ด C# เพื่อสาธิตการใช้ฟังก์ชัน ToDictionary

ไวยากรณ์:

มาดูรายละเอียดและทำความเข้าใจแต่ละองค์ประกอบที่มีให้ภายในไวยากรณ์ต่อไปนี้ของฟังก์ชัน C# ToDictionary ทีละรายการ:



ถูกเขียนตามคำบอก = ของสะสม. ถึงพจนานุกรม ( ตัวเลือกที่สำคัญ , องค์ประกอบตัวเลือก ) ;
  • คำหลัก 'var' ถูกตัดออกที่นี่เพื่อกำหนดหมวดหมู่ประเภทของพจนานุกรม 'dict' ที่เป็นผลลัพธ์ ในกรณีส่วนใหญ่ จะเป็น Dictionary โดยที่ K คือประเภทของคีย์ และ V คือหมวดหมู่ประเภทของค่าพจนานุกรม
  • องค์ประกอบ “คอลเลกชัน” แสดงถึงคอลเลกชันต้นฉบับที่คุณต้องการแปลงเป็นพจนานุกรม “dict” อาจเป็นคลาสใดก็ได้ที่ใช้อินเทอร์เฟซ IEnumerable เช่น รายการ อาร์เรย์ หรือผลลัพธ์การสืบค้น
  • คำสำคัญ “keySelector” คือนิพจน์ของผู้รับมอบสิทธิ์หรือแลมบ์ดาที่ระบุวิธีการแยกคีย์จากแต่ละรายการในคอลเลกชัน ได้รับองค์ประกอบจากคอลเลกชันเป็นอาร์กิวเมนต์และให้ค่าคีย์สำหรับรายการนั้นกลับคืนมา คีย์ไม่ควรซ้ำกันสำหรับแต่ละรายการในคอลเลกชัน เนื่องจากพจนานุกรมไม่สามารถมีคีย์ที่ซ้ำกัน
  • คำสำคัญ “elementSelector” หมายถึงนิพจน์ของผู้รับมอบสิทธิ์หรือแลมบ์ดาที่ระบุวิธีการแยกค่าจากแต่ละรายการในคอลเลกชัน นอกจากนี้ยังได้รับองค์ประกอบของคอลเลกชันเป็นอาร์กิวเมนต์และให้ค่าสำหรับรายการนั้น

หลังจากดำเนินการฟังก์ชัน ToDictionary คุณจะมีออบเจ็กต์พจนานุกรมใหม่โดยที่แต่ละรายการจากคอลเลกชันจะแสดงเป็นคู่คีย์-ค่า







ตัวอย่างที่ 1:

มาเริ่มต้นคู่มือนี้ใหม่ด้วยการสาธิตการใช้ฟังก์ชัน ToDictionary ใน C# ด้วยความช่วยเหลือของตัวอย่างโค้ด มาดูกันทีละขั้นตอน



รหัสเริ่มต้นด้วยการนำเข้าเนมสเปซที่จำเป็น: System, System.Collections.Generic และ System.Linq เนมสเปซเหล่านี้มีคลาสและวิธีการขยายที่จำเป็นในการทำงานกับคอลเลกชันและ LINQ คลาส 'Dummy' ถูกกำหนดไว้ซึ่งมีเมธอด 'Main' ของโปรแกรม C# นี้



ภายในวิธีการ 'หลัก' รายการชื่อ 'L' จะถูกสร้างขึ้น รายการนี้ประกอบด้วยองค์ประกอบสตริงสามองค์ประกอบที่แสดงถึงชื่อของน้ำหอมต่างๆ ที่ผู้ใช้เลือก วิธีการ ToDictionary ถูกเรียกในรายการ 'L' มันจะแปลงรายการให้เป็นพจนานุกรม องค์ประกอบสตริงแต่ละรายการในรายการทำหน้าที่เป็นทั้งคีย์และค่าในพจนานุกรมผลลัพธ์





พจนานุกรมถูกสร้างขึ้นด้วยการเปรียบเทียบคีย์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยใช้พารามิเตอร์ StringComparer.OrdinalIgnoreCase ซึ่งส่วนใหญ่จะใช้เพื่อระบุการเปรียบเทียบที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อตรวจสอบการมีอยู่ของคีย์ คำสั่ง 'if' จะตรวจสอบว่าพจนานุกรมมีคีย์ 'bombshell' หรือไม่ โดยไม่สนใจตัวพิมพ์เล็กหรือใหญ่ หากพบคีย์ ข้อมูลโค้ดในส่วน 'if' จะได้รับการประมวลผล ภายในบล็อก “if” คำสั่ง Console.WriteLine (“Bombshell มีอยู่”) จะถูกดำเนินการ ซึ่งจะพิมพ์ข้อความ “Bombshell ที่มีอยู่” ไปยังคอนโซล

โดยใช้ระบบ ;

โดยใช้ระบบ คอลเลกชัน . ทั่วไป ;

โดยใช้ระบบ ลิงค์ ;

คลาสดัมมี่

{

คงที่ เป็นโมฆะ หลัก ( )

{

รายการ < เชือก > = รายการใหม่ < เชือก > ( ) { 'ฝิ่นดำ' , 'กระสุน' , “กุชชี่ฟลอรา” } ;

คือน้ำหอม = แอล ถึงพจนานุกรม ( x => x , x => จริง , StringComparer ลำดับ IgnoreCase ) ;

ถ้า ( น้ำหอม. ประกอบด้วยคีย์ ( 'กระสุน' ) )

{

คอนโซล เขียนไลน์ ( 'กระสุนมีอยู่จริง' ) ;

}

}

}

เนื่องจากพจนานุกรมถูกสร้างขึ้นโดยมีการเปรียบเทียบแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ปุ่ม 'bombshell' จึงตรงกับคีย์ 'Bombshell' จริงในพจนานุกรม ด้วยเหตุนี้ ข้อความ “Bombshell มีอยู่” จึงถูกพิมพ์บนคอนโซลดังที่แสดงในรูปภาพเอาต์พุตที่แนบมาต่อไปนี้:



ตัวอย่างที่ 2:

ภายในตัวอย่างโค้ดก่อนหน้านี้ เราได้สาธิตวิธีการแปลงคอลเลกชันอย่างง่ายเป็นพจนานุกรมผ่านฟังก์ชัน ToDictionary ตอนนี้ เราจะมาดูตัวอย่างโค้ดขั้นสูงเล็กๆ น้อยๆ ของ C# สำหรับการสาธิตการใช้งานฟังก์ชัน C# ToDictionary มาแจกแจงโค้ดทีละบรรทัด

ตัวอย่างโค้ดภาพประกอบนี้เริ่มต้นด้วยการนำเนมสเปซบังคับเดียวกันเข้ามา: System, System.Collections.Generic และ System.Linq เนมสเปซเหล่านี้จัดเตรียมคลาสที่จำเป็นและวิธีการขยายเพื่อทำงานกับคอลเลกชันและ LINQ สำหรับตัวอย่างโค้ดนี้ คลาส 'Dummy' ถูกกำหนดไว้ซึ่งเป็นจุดเริ่มต้น

ภายในวิธีการ 'หลัก' ของภาษา C# รายการชื่อ 'L' จะถูกสร้างขึ้น รายการนี้ประกอบด้วยออบเจ็กต์ 3 รายการในคลาส 'ข้อมูล' ซึ่งแสดงถึงผลิตภัณฑ์เครื่องสำอางต่างๆ พร้อมด้วยราคาและแบรนด์ แต่ละออบเจ็กต์ข้อมูลจะถูกเตรียมใช้งานโดยใช้ไวยากรณ์ของออบเจ็กต์ตัวเริ่มต้น คุณสมบัติ 'ราคา' และ 'แบรนด์' ของแต่ละออบเจ็กต์ได้รับการตั้งค่าด้วยค่าเฉพาะ

วิธีการ ToDictionary มาถึงแล้ว มันถูกเรียกที่นี่ในรายการ 'L' โดยจะแปลงรายการเป็นพจนานุกรมโดยที่ใช้คุณสมบัติ 'ราคา' เป็นคีย์ และใช้คุณสมบัติ 'แบรนด์' เป็นค่า พจนานุกรมผลลัพธ์ถูกกำหนดให้กับตัวแปร “Dic” ตามที่กล่าวไว้ในข้อมูลโค้ดที่ให้มาต่อไปนี้ ลูป 'foreach' ถูกยกเลิกเพื่อเรียกคู่คีย์-ค่าในพจนานุกรม 'Dic'

ภายในลูป คีย์และค่าของแต่ละคู่สามารถเข้าถึงได้โดยใช้คุณสมบัติ 'คีย์' และ 'ค่า' ของโครงสร้าง KeyValuePair คำสั่งฟังก์ชัน Console.WriteLine จะพิมพ์คู่คีย์-ค่าแต่ละคู่ไปยังคอนโซล เอาต์พุตจะถูกจัดรูปแบบโดยใช้การแก้ไขสตริงเพื่อแสดงข้อมูลราคาและแบรนด์แยกกัน

ในที่นี้ คลาส 'ข้อมูล' ถูกกำหนดด้วยคุณสมบัติสองประการ: 'ราคา' (จำนวนเต็มที่แสดงถึงราคาของผลิตภัณฑ์เครื่องสำอาง) และ 'แบรนด์' (สตริงที่แสดงถึงชื่อแบรนด์ของผลิตภัณฑ์)

โดยใช้ระบบ ;

โดยใช้ระบบ คอลเลกชัน . ทั่วไป ;

โดยใช้ระบบ ลิงค์ ;

คลาสดัมมี่

{

คงที่ เป็นโมฆะ หลัก ( )

{

รายการ < ข้อมูล > = รายการใหม่ < ข้อมูล > ( )

{

ข้อมูลใหม่ { ราคา = 13000 , ยี่ห้อ = “ฮูดา บิวตี้” } ,

ข้อมูลใหม่ { ราคา = 15,000 , ยี่ห้อ = 'ชาร์ล็อตต์ เทลเบอรี' } ,

ข้อมูลใหม่ { ราคา = 11000 , ยี่ห้อ = “นาร์ส” }

} ;

พจนานุกรม < ภายใน , เชือก > ธ.ค = ล. ถึงพจนานุกรม ( พี => พี ราคา , พี => พี ยี่ห้อ ) ;

แต่ละ ( var v ใน Dic )

{

คอนโซล เขียนไลน์ ( $ 'ราคา: {v.Key} แบรนด์: {v.Value}' ) ;

}

}

}

ข้อมูลคลาส

{

สาธารณะ ภายใน ราคา { รับ ; ชุด ; }

แบรนด์สตริงสาธารณะ { รับ ; ชุด ; }

}

เมื่อเรียกใช้โค้ด โค้ดจะสร้างรายการของออบเจ็กต์ข้อมูล แปลงรายการเป็นพจนานุกรมโดยใช้วิธี ToDictionary จากนั้นจึงแสดงคู่คีย์-ค่าของพจนานุกรมโดยใช้ลูป 'foreach'

ผลลัพธ์สำหรับตัวอย่างโค้ดนี้มีดังต่อไปนี้ โดยจะแสดงราคาและแบรนด์ของผลิตภัณฑ์เครื่องสำอางที่จัดเก็บไว้ในพจนานุกรมตามคุณสมบัติเฉพาะ ซึ่งเป็นวิธีที่สะดวกในการจัดระเบียบและเข้าถึงข้อมูลเป็นคู่คีย์-ค่า ผลลัพธ์ของโค้ดก่อนหน้านี้แสดงสามระเบียนสำหรับพจนานุกรม:

บทสรุป

คู่มือ C# นี้สาธิตการใช้วิธี C# ToDictionary ผ่านภาพประกอบโค้ดพื้นฐานและแม่นยำบางส่วน ด้วยการนำเสนอกลไกที่ชัดเจนและแสดงออกในการอธิบายคู่คีย์-ค่า วิธีการ ToDictionary ช่วยให้การเปลี่ยนคอลเลกชันเป็นพจนานุกรมได้ง่ายขึ้น เป็นยูทิลิตี้ C# ที่แข็งแกร่งในการจัดการและแปลงข้อมูล