سینتکس LINQ
به منظور نوشتن کوئری LINQ دو راه (دو نوع سینتکس) وجود دارد که در زیر مشاهده می کنید:
- Query Syntax یا Query Expression Syntax
- Method Syntax یا Method Extension Syntax یا Fluent
سینتکس کوئری
سینتکس کوئری LINQ شبیه به SQL است با این تفاوت که به عنوان دستور سی شارپ/VB در داخل کد برنامه تعریف می شود. مثال:
1 2 3 4 5 | from <range variable> in <IEnumerable<T> or IQueryable<T> Collection> <Standard Query Operators> <lambda expression> <select or groupBy operator> <result formation> |
در این نوع سینتکس کوئری با کلمه کلیدی from شروع و با کلمه کلیدی select خاتمه می یابد. در مثال زیر با استفاده از این سینتکس مجموعه ای از رشته هایی که شامل کلمه “Tutorials” هستند را انتخاب می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 | / string collection IList<string> stringList = new List<string>() { "C# Tutorials", "VB.NET Tutorials", "Learn C++", "MVC Tutorials" , "Java" }; // LINQ Query Syntax var result = from s in stringList where s.Contains("Tutorials") select s; |
تصویر زیر ساختار و جزئیات یک کوئری LINQ را نشان می دهد:
بعد از عبارت from می توانیم از عملگرهای استاندارد کوئری نویسی مختلفی برای فیلتر، گروه بندی و یا join کردن عناصر مجموعه استفاده کنیم. برای نمونه در مثال فوق از عملگر where به همراه یک شرط استفاده کرده ایم. یک کوئری LINQ همیشه با یک select یا group خاتمه می یابد. عملگر select به منظور شکل دادن به اطلاعات انتخاب شده استفاده می شود. با استفاده از این عملگر می توانیم کل شیء یا فقط بعضی از خاصیت های مورد نیاز را انتخاب کنید. در مثال فوق ما کل نتیجه را انتخاب کرده ایم که یک رشته است.
در مثال زیر با استفاده از سینتکس کوئری دانش آموزان نوجوان موجود در مجموعه studentList را پیدا می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 | // Student collection 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 Method Syntax to find out teenager students var teenAgerStudents = studentList.Where(s => s.Age > 12 && s.Age < 20) .ToList<Student>(); |
پیادهسازی مثال فوق در زبان VB.NET:
1 2 3 4 5 6 7 8 9 10 11 12 | // Student collection 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 Method Syntax to find out teenager students Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 And s.Age < 20) .ToList() |
سینتکس متد
در سینتکس متد که به عنوان fluent نیز شناخته می شود، از متدهای افزودنی موجود در کلاس Enumerable و Queryable استفاده می شود. در هنگام کامپایل، سینتکس کوئری به سینتکس متد تبدیل می شود. در مثال زیر رشته هایی که دارای کلمه “Tutorials” باشند، انتخاب می شوند:
1 2 3 4 5 6 7 8 9 10 11 | // string collection IList<string> stringList = new List<string>() { "C# Tutorials", "VB.NET Tutorials", "Learn C++", "MVC Tutorials" , "Java" }; // LINQ Query Syntax var result = stringList.Where(s => s.Contains("Tutorials")); |
در تصویر زیر ساختار مربوط به این سینتکس را مشاهده می کنید:
همانطور که در کد تصویر فوق مشاهده می کنید، سینتکس متد ترکیبی از متدهای افزودنی و عبارت لامبدا است.
هیچ نظری ثبت نشده است