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()تُنفذ فورًا وتُخزّن النتائج في الذاكرة.
استخدامات عملية:
- الوصول السريع: القواميس تسمح بالوصول السريع إلى القيم باستخدام المفاتيح.
- تجنب التكرار: تضمن أن كل مفتاح فريد داخل القاموس.
تعليقات
إرسال تعليق