0Pricing
C# Academy · درس

GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة)

جمّع العناصر، ووحّد التسلسلات، واختزلها باستخدام Aggregate، وأنشئ نتائج واضحة باستخدام الأنواع المجهولة.

GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة) درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.

نظرة عامة على العوامل المتقدمة

موضوع اليوم:

  • GroupBy: إنشاء مجموعات حسب مفتاح
  • Join: دمج تسلسلين وفق مفتاح
  • Aggregate: اختزال التسلسل إلى قيمة واحدة
  • الأنواع المجهولة: إنشاء إسقاطات مرتبة

التجميع حسب المفتاح

ينشئ GroupBy مجموعات تحتوي على Key وتسلسل داخلي من العناصر التي تشترك في ذلك المفتاح.

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    string[] words = new string[] { "ant", "cat", "tiger", "lion", "dog", "eagle" };

    var groups = words.GroupBy(w => w.Length);

    foreach (var g in groups)
    {
      Console.WriteLine("Len " + g.Key + ":");
      foreach (string w in g) Console.WriteLine(" - " + w);
    }
  }
}

الضم الداخلي حسب المفتاح

يطابق Join بين عناصر تسلسلين حسب المفتاح، ثم يُسقط النتيجة المدمجة.

using System;
using System.Linq;

public sealed class Customer { public int Id; public string Name; public Customer(int id, string name){ Id=id; Name=name; } }
public sealed class Order    { public int CustomerId; public string Item; public Order(int cid, string item){ CustomerId=cid; Item=item; } }

public class Program
{
  public static void Main(string[] args)
  {
    var customers = new Customer[] { new Customer(1,"Ada"), new Customer(2,"Bob") };
    var orders    = new Order[]    { new Order(1,"Book"), new Order(1,"Pen"), new Order(2,"Map") };

    var joined = customers.Join(
      orders,
      c => c.Id,
      o => o.CustomerId,
      (c, o) => c.Name + " -> " + o.Item);

    foreach (string s in joined) Console.WriteLine(s);
  }
}

أساسيات Aggregate

يطبّق Aggregate مُراكِماً لاختزال تسلسل إلى نتيجة واحدة. اختر قيمة ابتدائية مناسبة.

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    int[] xs = new int[] { 1, 2, 3, 4 };

    // Product with seed 1
    int product = xs.Aggregate(1, (acc, n) => acc * n);
    Console.WriteLine("Product = " + product); // 24

    // Join words with a separator using seed
    string[] words = new string[] { "a", "b", "c" };
    string csv = words.Aggregate("", (acc, w) => acc == "" ? w : acc + "," + w);
    Console.WriteLine(csv); // a,b,c
  }
}

الإسقاط باستخدام نوع مجهول

استخدم الأنواع المجهولة لإنشاء إسقاطات مرتبة: new { Name = c.Name, ... } أو الصيغة المختصرة new { c.Name }.

using System;
using System.Linq;

public sealed class City { public string Name; public int Pop; public City(string n,int p){ Name=n; Pop=p; } }

public class Program
{
  public static void Main(string[] args)
  {
    var cities = new City[]
    {
      new City("Oslo", 634000),
      new City("Rome", 2873000),
      new City("Riga", 605000)
    };

    var small = cities
      .Where(c => c.Pop < 1000000)
      .Select(c => new { c.Name, Millions = (c.Pop / 1000000.0) });

    foreach (var x in small)
    {
      Console.WriteLine(x.Name + " ~ " + x.Millions + "M");
    }
  }
}

نصائح عملية

نصائح:

  • بعد GroupBy، كرّر على المجموعات ثم على العناصر.
  • استخدم Join عندما يكون لديك مصدران بمفاتيح متطابقة.
  • اختر قيمة ابتدائية منطقية لـ Aggregate.
  • تكون الأنواع المجهولة محلية؛ فأعد DTOs ملموسة من واجهات API العامة.

الغرض من GroupBy

تحقق سريع: أي عامل من LINQ يجمع العناصر حسب مفتاح ويعيد تسلسلاً من المجموعات؟

مراجعة

مراجعة: استخدم GroupBy لإنشاء المجموعات، وJoin لدمج المصادر، وAggregate للاختزال، والأنواع المجهولة لإنشاء إسقاطات مرتبة.

الأسئلة الشائعة

هل درس «GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة)» مجاني؟

نعم — نص درس «GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.

ماذا ستتعلم في «GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة)»؟

جمّع العناصر، ووحّد التسلسلات، واختزلها باستخدام Aggregate، وأنشئ نتائج واضحة باستخدام الأنواع المجهولة. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.

كم من الوقت يستغرق درس «GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. GroupBy وJoin وAggregate والإسقاط (الأنواع المجهولة)
  2. تحويل النتائج (ToList وToDictionary) وملاحظات الأداء
  3. نصائح القابلية للتركيب
← العودة إلى C# Academy