الإرشادات التفصيلية: كتابة الإستعلامات في Visual Basic

توضح هذه معاينة كيفية استخدام ميزات اللغة Visual أساسى إلى كتابة مجموعة ميزات Language-Integrated Query‏ (LINQ)تعبيرات الاستعلام. معاينة توضح كيف إلى إنشاء استعلامات على قائمة الكائنات الطالب، كيف إلى تشغيل الاستعلامات، وكيف إلى تعديلها. الاستعلامات التي تتضمن العديد من الميزات الجديدة من Visual Basic 2008، المهيئات الكائن، الاستخراج نوع المحلية، بما في ذلك و أنواع مجهولة.

بعد إكمال هذه معاينة، ستكون جاهزاً للانتقال إلى العينات و وثائق معينة LINQموفر إذا كنت مهتما بوصة LINQتضمين الموفرينمكون LINQ to SQL,LINQ إلى DataSet، ومكون LINQ to XML.

ارتباط إلى فيديو للحصول على نسخة فيديو لهذا الموضوع، راجع كيف تقوم بما يلي: كتابة الاستعلامات في Visual أساسى.

أنشئ مشروع .

لإنشاء أحد المشروعات التي تستهدف الإصدار 3.5 أو الإصدار الأحدث من.NET Framework

  1. ابدأ Visual Studio 2008.

  2. من القائمة ملف، انقر فوق مشروع جديد.

  3. انقر فوق تطبيق وحدة تحكم ومن ثم انقر فوق ‏‏موافق .

    يتم تاريخ الإنشاء مشروع. بشكل افتراضي، يحتوي على مرجع إلى النظام.Core.dll Importsعبارة عن System.Linqمساحة الاسم، كلاهما من الذي مطلوبة لتشغيل LINQالاستعلامات.

إضافة مصدر بيانات في ذاكرة

مصدر بيانات من أجل الاستعلامات في ترتيب هو معاينة هو lهوt Studentالكائنات. كل Studentالكائن يحتوي على اسم أول، أخير اسم سنة فئة ورتبة أكاديمي في النص الأساسي للطلاب.

لإضافة مصدر البيانات

  • بتعريف Studentالفئة، و إنشاء قائمة مثيلات فئة.

    هام

    التعليمة البرمجية المطلوبة لتعريف Studentالفئة وقم بإنشاء lهوt المستخدمة في الأمثلة معاينة هو المتوفرة في كيفية القيام بما يلي: إنشاء قائمة من العناصر. يمكنك نسخ منه و لصق إلى مشروع الخاص بك. الجديدة تعليمات برمجية استبدال تعليمات برمجية التي ظهرت عند قيامك بتاريخ الإنشاء مشروع.

إلى إضافة طالب جديد إلى قائمة الطلاب

  • اتبع النقش في getStudentsالأسلوب إضافة مثالاً آخر Studentالفئة إلى قائمة. إضافة الطالب سوف تعرفك إلى كائن المهيئات، وهي عبارة عن الجديد في Visual Basic 2008. لمزيد من المعلومات، راجع المُهيآت الكائن: أنواع المسماة "و" مجهول.

قم بإنشاء استعلام

عند تنفيذ استعلام بإضافته في هذا مقطع ينشيء قائمة الطلاب مرتبته أكاديمي يضع عليها في قمة عشرة. لأن الاستعلام بتحديد كامل Studentالكائن في كل مرة، النوع الاستعلام الناتج هو IEnumerable(Of Student). ومع ذلك، نوع الاستعلام بشكل عام هو غير محدد في ملفات تعريف الاستعلام. بدلاً من ذلك، يستخدم المحول البرمجي نوع المحلي الاستخراج إلى تحديد النوع. لمزيد من المعلومات، راجع للاستخراج نوع المحلي. المتغير، الاستعلام نطاق currentStudent، يعمل كـ مرجع لكل Studentمثيل في المصدر، students، مما يوفر وصولاً إلى خصائص لكل كائن في students.

لإنشاء استعلام بسيط

  1. بحث المكان في Mainالأسلوب المشروع الذي هو وضع علامة عليها كالتالي:

    ' ****Paste query and query execution code from the walkthrough,
    ' ****or any code of your own, here in Main.
    

    قم بنسخ ما يلي تعليمات برمجية ولصقه في.

    Dim studentQuery = From currentStudent In students
                       Where currentStudent.Rank <= 10
                       Select currentStudent
    
  2. ضع مؤشر ماوس فوق studentQueryفي تعليمات برمجية التحقق من هو نوع معين إلى المترجم IEnumerable(Of Student).

تشغيل استعلام

متغير studentQueryيحتوي على التعريف استعلام، نتائج التشغيل لا استعلام. تقنية نموذجي لتشغيل استعلام هو For Eachتكرار حلقي. كل عنصر في التسلسل الذي تم إرجاعه هو الوصول إليها من خلال متغير تكرار الحلقة. لمزيد من المعلومات حول استعلام التنفيذ, راجع كتابة أول استعلام LINQ خاص بك (Visual Basic).

إلى تشغيل الاستعلام

  1. إضافة التالي For Eachتكرار حلقي أدناه الاستعلام في مشروع الخاص بك.

    For Each studentRecord In studentQuery
        Console.WriteLine(studentRecord.Last & ", " & studentRecord.First)
    Next
    
  2. ضع مؤشر ماوس فوق متغير عنصر تحكم الحلقة studentRecordإلى معرفة نوع بيانات الخاص به. النوع studentRecordهو الاستدلال إلى يكون Student، لأن studentQueryبإرجاع مجموعة من Studentالمثيلات.

  3. بنية و تشغيل تطبيق بواسطة الضغط على زر'Ctrl' + F5. لاحظ نتائج في نافذة وحدة التحكم.

تعديل الاستعلام

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

لترتيب النتائج

  1. إضافة التالية Order Byجملة بين Whereعبارة و Selectكشف استعلام. Order Byجملة ترتيب نتائج أبجدياً من A إلى Z، وفقا أخير اسم كل طالب.

    Order By currentStudent.Last Ascending 
    
  2. للترتيب حسب اسم العائلة، الاسم أول، ثم إضافة كل من الحقول إلى الاستعلام:

    Order By currentStudent.Last Ascending, currentStudent.First Ascending 
    

    يمكنك أيضا تحديد Descendingبطلب من ي إلى أ.

  3. بنية و تشغيل تطبيق بواسطة الضغط على زر'Ctrl' + F5. لاحظ نتائج في نافذة وحدة التحكم.

إلى تقديم معرفاً محلية

  1. قم بإضافة التعليمة البرمجية في هذا القسم إلى تقديم معرّف محلي في تعبير الاستعلام. سيحتوي معرّف محلي نتائج متوسطة. في المثال التالي، nameعبارة عن معرّف التي تحتوي على سلسلة الطالب أول والأخير أسماء. يمكن استخدام معرفاً محلي وذلك، أو أنه قد يؤدي إلى تحسين الأداء بواسطة تخزين نتائج التعبير الذي سيتم وإلا يمكن حساب عدة مرة/مرات.

    Dim studentQuery2 =
            From currentStudent In students
            Let name = currentStudent.Last & ", " & currentStudent.First
            Where currentStudent.Year = "Senior" And currentStudent.Rank <= 10
            Order By name Ascending
            Select currentStudent
    
    ' If you see too many results, comment out the previous
    ' For Each loop.
    For Each studentRecord In studentQuery2
        Console.WriteLine(studentRecord.Last & ", " & studentRecord.First)
    Next
    
  2. بنية و تشغيل تطبيق بواسطة الضغط على زر'Ctrl' + F5. لاحظ نتائج في نافذة وحدة التحكم.

لمشروع حقل واحد في جملة تحديد

  1. إضافة the استعلام و For Each تكرار حلقي من this مقطع إلى إنشاء a استعلام that produces a تسلسل whose عناصر differ من the عناصر في the المصدر. في the following مثال, the المصدر هو a مجموعة of Student الكائنات, but فقط واحد عضو of each كائن هو returned: the أول اسم of students whose أخير اسم هو Garcia. Because currentStudent.First هو a سلسلة, the نوع بيانات of the تسلسل returned بواسطة studentQuery3 هو IEnumerable(Of String), a تسلسل of سلاسل. كـ في earlier أمثلة, the assignment of a نوع بيانات for studentQuery3 هو يسار for the compiler إلى determine بواسطة using محلي استنتاج النوع.

    Dim studentQuery3 = From currentStudent In students
                        Where currentStudent.Last = "Garcia"
                        Select currentStudent.First
    
    ' If you see too many results, comment out the previous
    ' For Each loops.
    For Each studentRecord In studentQuery3
        Console.WriteLine(studentRecord)
    Next
    
  2. Rest the ماوس مؤشر over studentQuery3 في your تعليمات برمجية إلى verify that the assigned نوع هو IEnumerable(Of String).

  3. بنية و تشغيل تطبيق بواسطة الضغط على زر'Ctrl' + F5. لاحظ نتائج في نافذة وحدة التحكم.

إلى إنشاء an نوع مجهول في the تحديد clause

  1. إضافة the تعليمات برمجية من this مقطع إلى see how أنواع مجهولة are used في queries. أنواع مجهولة are a جديد ميزة في Visual Basic 2008. You استخدم them في queries when you want إلى return several حقول من the بيانات المصدر rather than إكمال records (currentStudent records في السابق أمثلة) أو مفرد حقول (First في the preceding مقطع). بدلاً من تعريف جديد يسمى النوع الذي يحتوي على حقول التي تريدها إلى تضمين في الناتج، يمكنك تحديد حقول في Selectعبارة والمحول البرمجي ينشئ على نوع مجهول مع تلك حقول خصائصه. للحصول على مزيد من المعلومات، راجع أنواع مجهول.

    يقوم المثال التالي بإنشاء استعلام يقوم بإرجاع اسم ورتبة seniors مرتبته أكاديمي هو بين 1 و 10، في ترتيب تصاعدي الأكاديمي. في هذا المثال، النوع studentQuery4يجب أن يكون الاستدلال لأن Selectعبارة إرجاع مثيل لنوع مجهول، و يحتوي على نوع مجهول لا يوجد اسم قابل للاستخدام.

    Dim studentQuery4 =
            From currentStudent In students
            Where currentStudent.Year = "Senior" And currentStudent.Rank <= 10
            Order By currentStudent.Rank Ascending
            Select currentStudent.First, currentStudent.Last, currentStudent.Rank
    
    ' If you see too many results, comment out the previous
    ' For Each loops.
    For Each studentRecord In studentQuery4
        Console.WriteLine(studentRecord.Last & ", " & studentRecord.First &
                          ":  " & studentRecord.Rank)
    Next
    
  2. بنية و تشغيل تطبيق بواسطة الضغط على زر'Ctrl' + F5. لاحظ نتائج في نافذة وحدة التحكم.

أمثلة إضافى

والآن بعد أن فهم أساسيات ما يلي هو lهوt أمثلة إضافى لتوضيح مرونة وقوة LINQالاستعلامات. كل مثال هو مسبوقة وصفاً موجزاً عن ماذا. ضع مؤشر ماوس فوق المتغير نتيجة الاستعلام لكل استعلام إلى معرفة نوع inferred. استخدام For Eachتكرار حلقي إلى ينتج نتائج.

' Find all students who are seniors.
Dim q1 = From currentStudent In students
         Where currentStudent.Year = "Senior"
         Select currentStudent

' Write a For Each loop to execute the query.
For Each q In q1
    Console.WriteLine(q.First & " " & q.Last)
Next

' Find all students with a first name beginning with "C".
Dim q2 = From currentStudent In students
         Where currentStudent.First.StartsWith("C")
         Select currentStudent

' Find all top ranked seniors (rank < 40).
Dim q3 = From currentStudent In students
         Where currentStudent.Rank < 40 And currentStudent.Year = "Senior"
         Select currentStudent

' Find all seniors with a lower rank than a student who 
' is not a senior.
Dim q4 = From student1 In students, student2 In students
         Where student1.Year = "Senior" And student2.Year <> "Senior" And
               student1.Rank > student2.Rank
         Select student1
         Distinct

' Retrieve the full names of all students, sorted by last name.
Dim q5 = From currentStudent In students
         Order By currentStudent.Last
         Select Name = currentStudent.First & " " & currentStudent.Last

' Determine how many students are ranked in the top 20.
Dim q6 = Aggregate currentStudent In students
         Where currentStudent.Rank <= 20
         Into Count()

' Count the number of different last names in the group of students.
Dim q7 = Aggregate currentStudent In students
         Select currentStudent.Last
         Distinct
         Into Count()

' Create a list box to show the last names of students.
Dim lb As New System.Windows.Forms.ListBox
Dim q8 = From currentStudent In students
         Order By currentStudent.Last
         Select currentStudent.Last Distinct

For Each nextName As String In q8
    lb.Items.Add(nextName)
Next

' Find every process that has a lowercase "h", "l", or "d" in its name.
Dim letters() As String = {"h", "l", "d"}
Dim q9 = From proc In System.Diagnostics.Process.GetProcesses,
         letter In letters
         Where proc.ProcessName.Contains(letter)
         Select proc

For Each proc In q9
    Console.WriteLine(proc.ProcessName & ", " & proc.WorkingSet64)
Next

معلومات إضافية

بعد أن تكون على دراية بالمفاهيم أساسى للتعامل مع الاستعلامات، تكون جاهزاً إلى قراءة الوثائق ونماذج لنوع محدد من LINQموفر التي تهمك:

LINQ إلى الكائنات

LINQ to SQL

LINQ to XML

LINQ to DataSet

راجع أيضًا:

المهام

الإرشادات التفصيلية: كتابة استعلامات في #LINQ) C)

المبادئ

موارد LINQ التكميلية

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

المُهيآت الكائن: أنواع المسماة "و" مجهول

أنواع مجهول

مقدمة حول LINQ في Visual Basic

موارد أخرى

مجموعة ميزات Language-Integrated Query (LINQ)

الشروع في العمل مع LINQ في Visual Basic

LINQ في Visual Basic

استعلامات (Visual Basic)