English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

قواعد النصوص LINQ

في الفصل السابق، تعرفت على جملة LINQ. هنا، ستعرف جملة الطريقة.

استخدام جملة الطريقة (أيضاً يُسمى الجملة المتصلة) يتضمن استخدام الطرق الموسعة الموجودة في الفئات Static Enumerable أو Queryable، بشكل مشابه لما تقوم به عند استدعاء الطرق الموسعة لأي فئة.  

يحول الماكينيست النصوص إلى جملة طلب عند التجميع.

فيما يلي مثال على استعلام LINQ بالجملة يعود بجمع من النصوص يحتوي على كلمة "Tutorials".

// المجموعات النصية
IList<string> stringList = new List<string>() {}} 
    "C# Tutorials",
    "VB.NET Tutorials",
    "تعلم C++",
    "MVC Tutorials",
    "Java" 
};
// جملة الأساليب LINQ
var result = stringList.Where(s => s.Contains("Tutorials"));

يوضح الشكل التالي هيكل جملة الأساليب LINQ.

هيكل جملة الأساليب LINQ

كما هو موضح في الشكل السابق، تشمل جملة الأساليب امتدادات اللغة Lambda. يتم تعريف امتداد Where في فئة Enumerable.

إذا نظرت إلى توقيع استدعاء Where امتداد، يمكنك ملاحظة أن Where يستقبل وكيل predicate Func<Student,bool> يعني أنه يمكنك تقديم أي دالة تمثل وكيلًا تأخذ كائن Student كمعامل يدخل ويقوم بتقديم قيمة منطقية، كما هو موضح في الشكل التالي. يتم استخدام التعبير اللامسي كوكيل يتم تقديمه إلى جملة Where. في الفصل التالي سنتعلم عن التعبيرات اللامسي.

مكلفة Func في Where

في المثال التالي، يتم عرض كيفية استخدام جملة الأساليب LINQ مع مجموعة IEnumerable <T>.

// مجموعة الطلاب
IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 13} ,
        new Student() { StudentID = 2, StudentName = "Moin", Age = 21 } ,
        new Student() { StudentID = 3, StudentName = "Bill", Age = 18 } ,
        new Student() { StudentID = 4, StudentName = "Ram", Age = 20 },
        new Student() { StudentID = 5, StudentName = "Ron", Age = 15 } 
    };
// ايجاد طلاب المراهقين باستخدام قواعد النصوص LINQ
var teenAgerStudents = studentList.Where(s => s.Age > 12 && s.Age < 20)
                                  .ToList<Student>();
// مجموعة الطلاب
Dim studentList = New List(Of Student) From {
        New Student() With {.StudentID = 1, .StudentName = "John", .Age = 13},
        New Student() With {.StudentID = 2, .StudentName = "Moin", .Age = 21},
        New Student() With {.StudentID = 3, .StudentName = "Bill", .Age = 18},
        New Student() With {.StudentID = 4, .StudentName = "Ram", .Age = 20},
        New Student() With {.StudentID = 5, .StudentName = "Ron", .Age = 15}
    }
// ايجاد طلاب المراهقين باستخدام قواعد النصوص LINQ
Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 And s.Age < 20)
                                                       .ToList()

 نقاط يجب تذكرها

  1. كما يُقالقواعد النصوصمثل استدعاء طريقة توسيع.

  2. LINQقواعد النصوصالنصوص

  3. المعروف أيضًا بـFluent Syntax (نصوص متسلسلة)، لأنه يسمح بتسلسل من طلبات التوسيع.