LINQ - الأنواع المجهولة (Anonymous Types)

LINQ - الأنواع المجهولة (Anonymous Types)

الأنواع المجهولة (Anonymous Types) هي طريقة لإنشاء كائنات بدون الحاجة إلى إنشاء class أو struct مسبقًا. تُستخدم كثيرًا مع LINQ لتجميع نتائج تحتوي على خصائص معينة فقط من المصدر.


1. ما هو النوع المجهول؟

هو نوع يتم إنشاؤه في وقت التنفيذ باستخدام الكلمة المفتاحية new، ويحتوي على مجموعة من الخصائص يتم تحديدها مباشرة.

مثال أساسي:


var person = new { Name = "Mahmoud", Age = 30 };

Console.WriteLine(person.Name);  // Mahmoud
Console.WriteLine(person.Age);   // 30

2. استخدام Anonymous Types مع LINQ

يُستخدم غالبًا عند الرغبة في تحديد خصائص معينة فقط من كائنات المصدر بدون إنشاء نوع جديد.

مثال عملي باستخدام LINQ:


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

class Program
{
    class Student
    {
        public string Name { get; set; }
        public int Grade { get; set; }
        public int Age { get; set; }
    }

    static void Main()
    {
        List<Student> students = new List<Student>
        {
            new Student { Name = "Ali", Grade = 90, Age = 20 },
            new Student { Name = "Sara", Grade = 95, Age = 22 },
            new Student { Name = "Khaled", Grade = 80, Age = 21 }
        };

        var result = students.Select(s => new { s.Name, s.Grade });

        foreach (var student in result)
        {
            Console.WriteLine($"الاسم: {student.Name}، الدرجة: {student.Grade}");
        }
    }
}

3. مميزات Anonymous Types

  • سريع وسهل في الاستخدام بدون إنشاء كلاس.
  • مثالي عند التعامل مع استعلامات LINQ المؤقتة.
  • يحافظ على خصائص متعددة في كائن واحد.

4. القيود

  • لا يمكن إعادة استخدام النوع في مكان آخر.
  • لا يمكن تمرير النوع كمُعامل لطريقة إلا إذا كان object.
  • لا يمكن تحديد دوال داخله.

5. خلاصة

الأنواع المجهولة توفر طريقة مرنة وسريعة لعرض البيانات المطلوبة فقط في استعلامات LINQ، وتُستخدم بشكل شائع في التطبيقات التي لا تتطلب إنشاء كائنات قابلة لإعادة الاستخدام.

تعليقات

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

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

1.1 SQL Introduction

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