تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
افتراضي linQ to sql data الأستعلام من خلال لينك. وروعتها فى الأداء
#1
كاتب الموضوع : bedoonline


بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته

الحمد لله والصلاة والسلام على رسول الله وعلى آله وصحبه أما بعد:

موضوعنا اليوم يخص linQ لغه الأستعلامات الجديده من مايكروسوفت لعام 2008 . بصراحه لم أجد من شرح linq من قبل فقررت أن أشرح بعض الجمل والشروط لها لعلها تكون أفضل من ado.net فى الأستعلامات . .وإن شاء الله الشرح يقيدكم .

linq = language integrated query

لغه الأستعلام المترابطه أى هى لغه للإستعلام فقط
تتعامل مع كل أنواع قواعد البيانات و xml
تتعامل مع كل لغات .net
تتعامل مع كل من windows applications و asp.net
أنواع الأستعلامات الخاصه linq
تتعامل مع قواعد البيانات سكوالlinq to sql
تتعامل مع الداتا ست أو الداتا تابل الخاصه ب ad.net
linq dataset

مثل التعامل مع المصوفوفات linq to objects
linq to xml


لنكتفى من الكلام عن Linq لا بيعطى ولا بيجيب وندخل فى بناء الجمله داخل لينك
المعروف أخوانى فى جمله سيلكت الموجوده فى السكوال عامتاً تحتوى على syntax بالشكل ده
select * from employees where employeeid = 1 order by employeename asc
* = الصف كله
where employeeid = 1 يعنى عندما يكون رقم الموظف هوه 1
order by employeename asc ترتيب أسم الموظف أبجدياً

أعتقد إحنا نعرف الجمله دى
تعالى نبدء بال linq query syntax
from employees where employeeid =1 order by employeename asc select
الفكره فى linq أنك بتبدء من from والنهايه تكون select
سهله جداً


لندخل فى الأمثله وسنكتفى اليوم عن linq to objects وغداً بإذن الله تعالى linq to xml وعن linq to datset

1- linq to objects
أو شىء أستدعاء مكتبه
system.linq

مسأله واحد : لو أنا أريد أستنتاج الحروف الفرديه من مصفوفه معين ولتكن كالأتى


كود :
[color=#000000][COLOR=#0000bb]    Dim num [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][color=#007700]() = {[/color][color=#0000bb]1[/color][color=#007700], [/color][color=#0000bb]5[/color][color=#007700], [/color][color=#0000bb]7[/color][color=#007700], [/color][color=#0000bb]10[/color][color=#007700], [/color][color=#0000bb]34[/color][color=#007700], [/color][color=#0000bb]54[/color][COLOR=#007700]}
    [/COLOR][color=#0000bb]Dim oddNum [/color][color=#007700]= [/color][COLOR=#0000bb]_
     From number In num _
     Where number Mod 2 [/COLOR][color=#007700]<> [/color][COLOR=#0000bb]0 _
     Order By number Descending _
     Select number  
[/COLOR][/COLOR]

شرح الكود
from number in num
هنا يقوم المترجم من وراء الكواليس بتحديد نوع الnumber ويجعله Integer لأنه بالطبع وجد أن In num
where number mod 2<>0 أى عندم يكون الرقم لا يقبل القسمه على 2
order by number descending تعنى ترتيب الأرقام تنازلياً
select number وهنا من الغريب فى هذه اللغه أنك من الممكن عدم كتابه select number لأن البرنامج يستطبع معرفه ماذا تريد

كيفيه إظهار النتائج فى listbox مثلاً سيتم عن طريق for each loop



كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]For [/color][color=#0000bb]Each number [/color][color=#007700]As [/color][COLOR=#0000bb]Integer In oddNum
    listbox1[/COLOR][color=#007700].[/color][color=#0000bb]items[/color][color=#007700].[/color][color=#0000bb]add[/color][color=#007700]([/color][color=#0000bb]number[/color][COLOR=#007700])
    [/COLOR][COLOR=#0000bb]Next  
[/COLOR][/COLOR]
هذه هى النتائج



ومن هنا أخوانى يمكن أن تستخدم linq to objects فى الأستعلام داخل الكلاسات
يعنى مثلاً لو عندنا كلاس خاص بعلومات عن المرضى فى مستشفى معينه

وكيفيه إنشاء الكلاس هيكون بالكود الأتى

كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Public Class [/color][COLOR=#0000bb]Actor

  [/COLOR][color=#007700]Private [/color][color=#0000bb]_firstName [/color][color=#007700]As [/color][COLOR=#0000bb]String
  [/COLOR][color=#007700]Public [/color][color=#0000bb]Property FirstName[/color][color=#007700]() As [/color][COLOR=#0000bb]String
    Get
      [/COLOR][color=#007700]Return [/color][COLOR=#0000bb]_firstName
    End Get
    Set[/COLOR][color=#007700]([/color][color=#0000bb]ByVal value [/color][color=#007700]As [/color][color=#0000bb]String[/color][COLOR=#007700])
      [/COLOR][color=#0000bb]_firstName [/color][color=#007700]= [/color][COLOR=#0000bb]value
    End Set
  End Property

  [/COLOR][color=#007700]Private [/color][color=#0000bb]_lastName [/color][color=#007700]As [/color][COLOR=#0000bb]String
  [/COLOR][color=#007700]Public [/color][color=#0000bb]Property LastName[/color][color=#007700]() As [/color][COLOR=#0000bb]String
    Get
      [/COLOR][color=#007700]Return [/color][COLOR=#0000bb]_lastName
    End Get
    Set[/COLOR][color=#007700]([/color][color=#0000bb]ByVal value [/color][color=#007700]As [/color][color=#0000bb]String[/color][COLOR=#007700])
      [/COLOR][color=#0000bb]_lastName [/color][color=#007700]= [/color][COLOR=#0000bb]value
    End Set
  End Property

  [/COLOR][color=#007700]Private [/color][color=#0000bb]_birthDate [/color][color=#007700]As [/color][COLOR=#0000bb]Date
  [/COLOR][color=#007700]Public [/color][color=#0000bb]Property BirthDate[/color][color=#007700]() As [/color][COLOR=#0000bb]Date
    Get
      [/COLOR][color=#007700]Return [/color][COLOR=#0000bb]_birthDate
    End Get
    Set[/COLOR][color=#007700]([/color][color=#0000bb]ByVal value [/color][color=#007700]As [/color][color=#0000bb]Date[/color][COLOR=#007700])
      [/COLOR][color=#0000bb]_birthDate [/color][color=#007700]= [/color][COLOR=#0000bb]value
    End Set
  End Property

  [/COLOR][color=#007700]Private [/color][color=#0000bb]_country [/color][color=#007700]As [/color][COLOR=#0000bb]String
  [/COLOR][color=#007700]Public [/color][color=#0000bb]Property Country[/color][color=#007700]() As [/color][COLOR=#0000bb]String
    Get
      [/COLOR][color=#007700]Return [/color][COLOR=#0000bb]_country
    End Get
    Set[/COLOR][color=#007700]([/color][color=#0000bb]ByVal value [/color][color=#007700]As [/color][color=#0000bb]String[/color][COLOR=#007700])
      [/COLOR][color=#0000bb]_country [/color][color=#007700]= [/color][COLOR=#0000bb]value
    End Set
  End Property
End [/COLOR][COLOR=#007700]Class  
[/COLOR][color=#0000bb][/color][/COLOR]

وتصميم الكلاس عن طريق الdesign بهذا الشكل



الفكره حالياً كيفيه إضافه مرضى إلى هذا الكلاس بإستخدام Linq
أول شىء الفرق بين الإضافتين فى الfunctions وليكن patlist()
بالطريقه العاديه سيتم تعريف متغير من الكلاس الموجود

كود :
[color=#000000][COLOR=#0000bb]dim pat [/color][color=#007700]as new [/color][COLOR=#0000bb]patients
pat[/COLOR][color=#007700].[/color][color=#0000bb]firsname [/color][color=#007700]= [/color][COLOR=#dd0000]"mohammed"  
[/COLOR][color=#0000bb]pat[/color][color=#007700].[/color][color=#0000bb]secondname [/color][color=#007700]= [/color][COLOR=#dd0000]"ali"
[/COLOR][color=#0000bb]pat[/color][color=#007700].[/color][color=#0000bb]country [/color][color=#007700]= [/color][COLOR=#dd0000]"egypt "
[/COLOR][color=#0000bb]pat[/color][color=#007700].[/color][color=#0000bb]birthdat [/color][color=#007700]= [/color][COLOR=#ff8000]#2/5/1989#
[/COLOR][color=#0000bb]patients[/color][color=#007700].[/color][color=#0000bb]add[/color][color=#007700]([/color][color=#0000bb]pat[/color][COLOR=#007700])  
[/COLOR][color=#0000bb][/color][/COLOR]

أما بطريقه لينك


كود :
[color=#000000][COLOR=#0000bb]Dim pat1[/color][color=#007700]= [/color][color=#0000bb]patlist[/color][COLOR=#007700]()
    [/COLOR][color=#0000bb]Dim julypat [/color][color=#007700]= [/color][COLOR=#0000bb]_
     From pats In patients_
     Where pats[/COLOR][color=#007700].[/color][color=#0000bb]BirthDate[/color][color=#007700].[/color][color=#0000bb]Month [/color][color=#007700]= [/color][COLOR=#0000bb]7 _
     Order By pats[/COLOR][color=#007700].[/color][color=#0000bb]LastName[/color][color=#007700], [/color][color=#0000bb]pats[/color][color=#007700].[/color][COLOR=#0000bb]FirstName _
     Select pats  
[/COLOR][/COLOR]

وهنا نجد أن with تعود على الخصائص الموجوده فى الكلاس patients

كيفيه عمل أستعلام من الكلاس بإستخدام linq

اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim patients= patlist()
Dim julypats = _
From pat In patients_
Where pat.BirthDate.Month = 7 _
Order By pat.LastName, pat.FirstName _
Select pat [/TD]
[/TR]
[/TABLE]

من وهذا الأستعلام نريد المرضى الذين أنجبوا فى شهر يوليو

.................................................. ...............................................

والله أخوانى حاسس أنى لم استطع توصيل المعلومه جيداً ولكنى سأحاول تعديل شرحى فى الداتا باس لأنها الأهم


ويارب أكون قدرت أوصل المعلومه لكم .. وسيتم شرح dataset قريباً بإذن الله
هذه كانت مقدمه بسيطه linq وكيف سيتم إستخدمها


والسلام عليكم ورحمه الله وبركاته
}}}
تم الشكر بواسطة: Aymanr3b



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم