ToDictionary() في LINQ

شرح دالة ToDictionary() في LINQ

دالة ToDictionary() في LINQ تُستخدم لتحويل تسلسل من العناصر إلى قاموس (Dictionary<TKey, TValue>)، حيث يتم تحديد المفتاح والقيمة لكل عنصر باستخدام دوال اختيارية. هذه الدالة مفيدة جدًا لإنشاء قاموس من بيانات قائمة، يكون فيه لكل مفتاح قيمة مرتبطة به.


الصيغة العامة:


Dictionary<TKey, TValue> dictionary = source.ToDictionary(keySelector);
  • source: التسلسل الأصلي من النوع IEnumerable<TSource>.
  • keySelector: دالة تُحدد المفتاح لكل عنصر.


يمكن أيضًا تحديد دالة لاختيار القيمة لكل عنصر:


Dictionary<TKey, TValue> dictionary = source.ToDictionary(keySelector, elementSelector);
  • elementSelector: دالة تُحدد القيمة المقابلة لكل عنصر.


مثال عملي:


using System;
using System.Collections.Generic;
using System.Linq;

public class Product
{
    public int ID { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
}

public class Program
{
    public static void Main()
    {
        List<Product> products = new List<Product>
        {
            new Product { ID = 1, Name = "Laptop", Price = 800.00 },
            new Product { ID = 2, Name = "Smartphone", Price = 500.00 },
            new Product { ID = 3, Name = "Tablet", Price = 300.00 }
        };

        Dictionary<int, Product> productDictionary = products.ToDictionary(p => p.ID);

        foreach (var kvp in productDictionary)
        {
            Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value.Name}, Price: {kvp.Value.Price}");
        }
    }
}

الناتج:


Key: 1, Value: Laptop, Price: 800
Key: 2, Value: Smartphone, Price: 500
Key: 3, Value: Tablet, Price: 300

في هذا المثال، تم تحويل قائمة المنتجات إلى قاموس حيث المفتاح هو ID والقيمة هي كائن Product نفسه.


ملاحظات هامة:

  • استثناءات محتملة:
    • ArgumentNullException: إذا كانت source أو keySelector فارغة.
    • ArgumentException: إذا احتوت المجموعة على مفاتيح مكررة.
  • التنفيذ الفوري: دالة ToDictionary() تُنفذ فورًا وتُخزّن النتائج في الذاكرة.


استخدامات عملية:

  • الوصول السريع: القواميس تسمح بالوصول السريع إلى القيم باستخدام المفاتيح.
  • تجنب التكرار: تضمن أن كل مفتاح فريد داخل القاموس.


تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework