علاقات النوع في LINQ عمليات استعلام (#C)

لكتابة الاستعلامات بشكل فعال, يجب عليك فهم كيف تكون أنواع متغيرات في عملية استعلام كاملة متصلة ببعضها البعض. في حالة معرفة هذه العلاقات سوف تفهم بسهولة أكبر عينات LINQ وأمثلة التعليمات البرمجية في الوثائق. علاوة على ذلك، سوف تفهم ما يحدث في الخلفية عندما تكون المتغيرات محددة النوع ضمنيا باستخدام var.

عمليات استعلام LINQ محددة النوع بشدة في مصدر البيانات، في الاستعلام نفسه، ثم في تنفيذ الاستعلام. نوع المتغيرات في الاستعلام يجب أن يكون متوافق مع نوع العناصر في مصدر البيانات مع نوع متغير تكرار في عبارة foreach. يضمن تجديد النوع بشدة هذا أن أخطاء النوع يتم العثور عليها في وقت الترجمة عندما يكون ممكن تصحيحها قبل مواجهة المستخدمين لها.

من أجل إثبات علاقات النوع هذه، معظم الأمثلة التالية تستخدم تحديد النوع الصريح لكل المتغيرات. يُظهر المثال الأخير كيفية يطبيق المبادئ نفسها حتى عند استخدام تحديد النوع الضمني باستخدام var.

الاستعلامات التي لا تحول مصدر البيانات

يبين الرسم التوضيحي التالي عملية استعلام LINQ إلى كائنات التي لاتنفذ تحويلات على البيانات. يحتوي المصدر على تسلسل لسلاسل وإخراج الاستعلام هو أيضاً تسلسل سلاسل.

علاقة أنواع البيانات في استعلام LINQ

  1. وسيطة النوع لمصدر البيانات يتم تحدد نوع متغير النطاق.

  2. نوع الكائن المحدد يحدد نوع متغير الاستعلام. name حيث هو سلسلة. ولذلك، متغير الاستعلام <سلسلة> IEnumerable.

  3. يتم تكرار متغير الاستعلام في عبارة foreach. لأن متغير الاستعلام هو تسلسل من السلاسل، متغير التكرار هو سلسلة أيضاً.

الاستعلامات التي تحول مصدر البيانات

يبين الرسم التوضيحي التالي عملية استعلام مكون LINQ to SQL تقوم بإجراء تحويل بسيط على بيانات. الاستعلام يأخذ تسلسل كائنات Customerكإدخال، ثم يحدد فقط خاصية Name في الناتج. لأن Name عبارة عن سلسلة، ينتج الاستعلام سلسلة سلاسل كإخراج.

استعلام يقوم بتحويل نوع البيانات

  1. وسيطة النوع لمصدر البيانات يتم تحدد نوع متغير النطاق.

  2. العبارة select تقوم بإرجاع الخاصية Name بدلا من الكائن Customer الكامل. لأن Name هو سلسلة، وسيطة نوع custNameQuery هي string، وليست Customer.

  3. لأن custNameQuery عبارة عن تسلسل سلاسل، متغير التكرار الحلقي foreach يجب أن يكون أيضا string.

يبين الرسم التوضيحي التالي تحويل أكثر تعقيداً. عبارة select ترجع نوع مجهول يلتقط عضوان من الكائن Customer الأصلي.

استعلام يقوم بتحويل نوع البيانات

  1. وسيطة النوع لمصدر البيانات ، هي دائما نوع متغير النطاق ، في الاستعلام.

  2. لأن العبارة select تنتج نوع مجهول، متغير الاستعلام يجب أن يكون نوعه محدد ضمنيا بستخدام var.

  3. لأن نوع متغير الاستعلام هو ضمني، متغير التكرار في التكرار الحلقي foreach يجب أن يكون ضمني أيضا.

السماح لبرنامج التحويل البرمجي باستنتاج معلومات النوع.

على الرغم من أنه يجب عليك فهم علاقات النوع في عملية استعلام، لديك خيار السماح لبرنامج التحويل البرمجي بالقيام بكل العمل نيابة عنك. الكلمة الأساسية var يمكن استخدامها لأي متغير محلي في عملية استعلام. الشكل التوضيحي التالي يكافئ تماماً المثال رقم 2 التي تمت مناقشته سابقًا. الاختلاف الوحيد أن برنامج التحويل البرمجي سيزود النوع القوي لكل متغير في عملية الاستعلام:

تدفق نوع بكتابة ضمنية

لمزيد من المعلومات حول var، راجع ضمنيًا مكتوب المتغيرات المحلية (برمجة دليل C#).

راجع أيضًا:

المبادئ

علاقات النوع في عمليات استعلام (Visual Basic)

موارد أخرى

الشروع في استخدام LINQ في #C