كتابة الاستعلامات في C # LINQ

Ktabt Alast Lamat Fy C Linq



على غرار SQL ، من الممكن كتابة استعلامات في C # LINQ باستخدام بناء جملة الاستعلام. تُستخدم هذه الاستعلامات في تطبيقات قاعدة بيانات C # على الويب للحصول على البيانات من قاعدة البيانات وعرضها على الويب لمستخدمي الطرف الثالث. في هذا الدليل ، سنناقش بعض استعلامات LINQ المشابهة لـ SQL. لهذا ، سننشئ مصدر بيانات قائمة ونطبق الاستعلامات فيه.

بناء جملة الاستعلام:

دعونا نلقي نظرة على البنية العامة:

من مكرر في مصدر البيانات
يختار مكرر ؛

هنا:







  1. يمكن أن تكون Data_Source القائمة التي تحتوي على البيانات.
  2. يتم استخدام المكرر لجلب العناصر من Data_Source.

مصدر البيانات

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



استخدام نظام ؛
استخدام System.Collections.G عام ؛
استخدام النظام ؛
استخدام System.Collections ؛

عام فصل العمليات الحسابية
{
عام ثابتة فارغ رئيسي ( )
{
// إنشاء القائمة
قائمة أسعار_البلد = جديد قائمة ( ) {

// إضافة 5 سجلات إلى القائمة
جديد الأسعار ( ) { غرض = 'الفاكهة' ،موقع = 'الولايات المتحدة الأمريكية' ، كمية = 100 ، يكلف = 345.78 } و
جديد الأسعار ( ) { غرض = 'المكسرات' ،موقع = 'الهند' ، كمية = 200 ، يكلف = 3645.78 } و
جديد الأسعار ( ) { غرض = 'آحرون' ،موقع = 'المملكة المتحدة' ، كمية = 500 ، يكلف = 90.68 } و
جديد الأسعار ( ) { غرض = 'زيت' ،موقع = 'الولايات المتحدة الأمريكية' ، كمية = 100 ، يكلف = 345.78 } و
جديد الأسعار ( ) { غرض = 'توابل' ،موقع = 'الولايات المتحدة الأمريكية' ، كمية = 10 ، يكلف = 67.89 } و
} ؛


foreach ( كان أنا في أسعار_البلد )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛
}
}
}
عام فصل الأسعار {
عام خيط غرض { يحصل ؛ تعيين ؛ }
عام خيط موقع { يحصل ؛ تعيين ؛ }
عام int كمية { يحصل ؛ تعيين ؛ }
عام مزدوج يكلف { يحصل ؛ تعيين ؛ }
}

السجلات:







توضيح:

1. أنشئ الأسعار بالسمات التالية:

2. قم بإنشاء فئة أخرى وهي 'الحسابات' بالطريقة الرئيسية وإنشاء قائمة أسعار البلد بخمسة سجلات.



يختار

في الأساس ، 'select' هو عامل الإسقاط الذي يختار السمات من مصدر البيانات المحدد. يبدأ الاستعلام بـ 'from'. بعد ذلك ، نحدد المكرر الذي يتكرر على مصدر البيانات. ثم يتم تحديد عامل التشغيل 'select'.

بناء الجملة:

كل السمات: من المكرر في Data_Source حدد المكرر ؛

السمة المحددة: من المكرر في Data_Source حدد iterator.attribute ؛

مثال 1:

لنكتب استعلامًا لتحديد جميع السجلات من القائمة.

استخدام نظام ؛
استخدام System.Collections.G عام ؛
استخدام النظام ؛
استخدام System.Collections ؛

عام فصل العمليات الحسابية
{
عام ثابتة فارغ رئيسي ( )
{
// إنشاء القائمة
قائمة أسعار_البلد = جديد قائمة ( ) {

// إضافة 5 سجلات إلى القائمة
جديد الأسعار ( ) { غرض = 'الفاكهة' ،موقع = 'الولايات المتحدة الأمريكية' ، كمية = 100 ، يكلف = 345.78 } و
جديد الأسعار ( ) { غرض = 'المكسرات' ،موقع = 'الهند' ، كمية = 200 ، يكلف = 3645.78 } و
جديد الأسعار ( ) { غرض = 'آحرون' ،موقع = 'المملكة المتحدة' ، كمية = 500 ، يكلف = 90.68 } و
جديد الأسعار ( ) { غرض = 'زيت' ،موقع = 'الولايات المتحدة الأمريكية' ، كمية = 100 ، يكلف = 345.78 } و
جديد الأسعار ( ) { غرض = 'توابل' ،موقع = 'الولايات المتحدة الأمريكية' ، كمية = 10 ، يكلف = 67.89 } و
} ؛

// حدد عامل التشغيل في الاستعلام
كان بيانات = من أنا في أسعار_البلد
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}
}
}
عام فصل الأسعار {
عام خيط غرض { يحصل ؛ تعيين ؛ }
عام خيط موقع { يحصل ؛ تعيين ؛ }
عام int كمية { يحصل ؛ تعيين ؛ }
عام مزدوج يكلف { يحصل ؛ تعيين ؛ }
}

انتاج:

هنا ، لم نحدد أي سمة في طلب البحث 'select'. لقد جلبنا جميع السمات من الاستعلام (البيانات) داخل حلقة 'foreach' باستخدام المكرر.

المثال الثاني:

الآن ، احصل على العناصر عن طريق تحديد سمة العنصر داخل عامل التشغيل 'select'. الاستعلام هو ' من i في country_prices حدد i.item '.

// حدد عامل التشغيل للحصول على سمة العنصر في الاستعلام
كان بيانات = من أنا في أسعار_البلد
يختار أنا . غرض ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا ) ؛

}

انتاج:

خط 21 - خط 29:

2. أين

إذا كنت ترغب في تصفية البيانات بناءً على بعض الشروط / الشروط ، يمكنك استخدام عامل التشغيل 'where' في الاستعلام جنبًا إلى جنب مع عبارة 'select'. ولكن يتم استخدام عامل التشغيل 'حيث' أولاً ثم يتم تحديد عامل التشغيل المحدد.

بناء الجملة:

دعونا نرى كيفية استخدام عامل التشغيل 'where' داخل استعلام LINQ.

من مكرر في مصدر البيانات
أين حالة / س
يختار مكرر . يصف ؛

مثال 1: شرط واحد

دعونا نقوم بتصفية السجلات بناءً على سمة العنصر. استخدم عامل التشغيل يساوي (==) في عامل التشغيل 'where' كشرط وقارن المكرر مع 'Chillies'. لذلك ، يتم تحديد السجلات المتعلقة بـ 'الفلفل الحار'.

الاستعلام هو ' من أنا في country_prices
حيث i.item == 'الفلفل الحار'
حدد أنا '

// حدد مع مكان تصفية السجلات
كان بيانات = من أنا في أسعار_البلد
أين أنا . غرض == 'توابل'
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

انتاج:

لا يوجد سوى سجل واحد مع عنصر 'Chillies'.

خط 21 - خط 30:

المثال الثاني: شروط متعددة

دعنا نصفي السجلات بناءً على سمات الموقع والكمية. يجب أن تكون الكمية أكبر من 50 وأقل من 300. يجب أن يكون الموقع 'USA'.

الاستعلام هو ' من أنا في country_prices
حيث الكمية> 50
حيث أنا الكمية <300
حيث i.location == 'USA'
حدد أنا '

// حدد مع مكان تصفية السجلات عن طريق تحديد شروط متعددة
كان بيانات = من أنا في أسعار_البلد
أين أنا . كمية > خمسون
أين أنا . كمية < 300
أين أنا . موقع == 'الولايات المتحدة الأمريكية'
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

انتاج:

هناك نوعان من السجلات التي تتطابق مع الشروط السابقة.

خط 21 - خط 32:

المثال 3: و (&&) المشغل

يمكننا تحديد عامل التشغيل 'and (&&)' لتحديد شروط متعددة في وقت واحد. إذا تحققت جميع الشروط ، يتم إرجاع السجلات التي تفي بجميع الشروط بواسطة الاستعلام.

في هذا المثال ، نختار السجلات إذا كانت الكمية أكبر من 20 والتكلفة 67.89.

الاستعلام هو ' من أنا في country_prices
حيث أنا كمية <20 && i.cost == 67.89
حدد أنا '

كان بيانات = من أنا في أسعار_البلد
أين أنا . كمية < عشرين && أنا . يكلف == 67.89
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

انتاج:

يوجد سجل واحد فقط بكمية أقل من 20 وبتكلفة 67.89

خط 21 - خط 29:

المثال 4: أو (||) عامل التشغيل

يتم استخدام عامل التشغيل 'or (||)' أيضًا لتحديد شروط متعددة في وقت واحد. إذا كان شرط واحد على الأقل صحيحًا ، يتم إرجاع السجلات التي تفي بهذا الشرط.

في هذا المثال ، نحدد السجلات إذا كانت الكمية أكبر من 300 أو إذا كان الموقع 'طوكيو'.

الاستعلام هو ' من أنا في country_prices
حيث الكمية> 300 || i.location == 'طوكيو'
حدد أنا '

كان بيانات = من أنا في أسعار_البلد
أين أنا . كمية > 300 || أنا . موقع == 'طوكيو'
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

انتاج:

يوجد سجل واحد فقط بكمية أكبر من 300 (الشرط الأول مطابق).

خط 21 - خط 29:

3. ترتيب حسب

إذا كنت ترغب في ترتيب السجلات التي يتم إرجاعها بواسطة استعلام LINQ بترتيب تصاعدي أو تنازلي بناءً على القيم الموجودة في أي من السمات ، يمكنك استخدام عامل التشغيل 'الترتيب حسب' في الاستعلام. تحتاج إلى تحديد عامل التشغيل هذا قبل عامل التشغيل 'تحديد'.

بناء الجملة:

دعونا نرى كيفية استخدام عامل التشغيل 'order by' داخل استعلام LINQ.

ترتيب تصاعدي:

من مكرر في مصدر البيانات
طلب بواسطة مكرر . يصف تصاعدي
يختار مكرر ؛

تنازليا:

من مكرر في مصدر البيانات
طلب بواسطة مكرر . يصف تنازلي
يختار مكرر ؛

مثال 1: ترتيب تصاعدي

حدد جميع السمات من مصدر البيانات (القائمة) وأعدها بترتيب تصاعدي بناءً على القيم الموجودة في سمة الكمية.

الاستعلام هو ' من أنا في country_prices
ترتيب الكمية تصاعديًا
حدد أنا '

كان بيانات = من أنا في أسعار_البلد
الطلب من خلال أنا . كمية تصاعدي
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

انتاج:

خط 21 - خط 29:

المثال 2: تنازليا

حدد جميع السمات من مصدر البيانات (القائمة) وأعدها بترتيب تنازلي بناءً على القيم الموجودة في سمة التكلفة.

الاستعلام هو ' من أنا في country_prices
orderby i.cost تنازلي
حدد أنا '

كان بيانات = من أنا في أسعار_البلد
الطلب من خلال أنا . يكلف تنازلي
يختار أنا ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

انتاج:

خط 21 - خط 29:

4. الحد

يحدد الحد في SQL السجلات التي يتم إرجاعها بواسطة الاستعلام. تقوم بإرجاع أهم السجلات التي تم إرجاعها بواسطة الاستعلام. في LINQ ، يمكننا تحقيق ذلك من خلال استخدام Skip () مع عامل التشغيل Take (). يحصل Take () على العدد المحدد من السجلات. يستخدم Skip () لتحديد رقم سجل البداية. بهذه الطريقة ، يمكننا تحقيق وظيفة 'الحد' في LINQ.

بناء الجملة:

( من مكرر في مصدر البيانات
يختار مكرر ) . يتخطى ( ن ) . يأخذ ( ن ) ؛
  1. يستخدم Skip () لتخطي السجلات وإرجاع السجلات المتبقية. يستغرق عددًا صحيحًا يحدد عدد العناصر التي سيتم تخطيها. في حالتنا ، هو 0.
  2. يستخدم Take () لأخذ عدد 'n' من السجلات من السجل الأول.

مثال:

حدد السجلات الثلاثة الأولى من أصل خمسة سجلات تم إرجاعها بواسطة الاستعلام.

الاستعلام هو ' (من أنا في country_prices
حدد i). تخطي (0). خذ (3) '

كان بيانات = ( من أنا في أسعار_البلد
يختار أنا ) . يتخطى ( 0 ) . يأخذ ( 3 ) ؛

foreach ( كان أنا في بيانات )
{
وحدة التحكم . اكتب ( أنا . غرض + '' + أنا . موقع + '' + أنا . كمية + '' + أنا . يكلف ) ؛

}

}

انتاج:

خط 21 - خط 28:

خاتمة

لقد تعلمنا كيفية كتابة الاستعلامات في C # LINQ والتي تشبه SQL. كجزء من هذا البرنامج التعليمي ، ناقشنا كيفية استخدام عامل التشغيل 'select' لتحديد السجلات من مصدر البيانات. لتصفية السجلات التي يتم إرجاعها بواسطة الاستعلام ، استخدمنا عامل التشغيل 'where' من خلال تحديد الشروط. بعد ذلك ، تعلمنا كيفية فرز السجلات التي يتم إرجاعها بواسطة الاستعلام باستخدام عامل التشغيل 'ترتيب حسب'. أخيرًا ، للحد من السجلات ، استخدمنا عاملي Skip () و Take ().