02-10-12, 08:14 AM
كاتب الموضوع : bedoonline
بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته بسم الله الرحمن الرحيم
الحمد لله والصلاة والسلام على رسول الله وعلى آله وصحبه أما بعد:
موضوعنا اليوم يخص linQ لغه الأستعلامات الجديده من مايكروسوفت لعام 2008 . بصراحه لم أجد من شرح linq من قبل فقررت أن أشرح بعض الجمل والشروط لها لعلها تكون أفضل من ado.net فى الأستعلامات . .وإن شاء الله الشرح يقيدكم .
linq = language integrated query
لغه الأستعلام المترابطه أى هى لغه للإستعلام فقط
تتعامل مع كل أنواع قواعد البيانات و xml
تتعامل مع كل لغات .net
تتعامل مع كل من windows applications و asp.net
أنواع الأستعلامات الخاصه linqتتعامل مع كل أنواع قواعد البيانات و xml
تتعامل مع كل لغات .net
تتعامل مع كل من windows applications و asp.net
تتعامل مع قواعد البيانات سكوال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 وكيف سيتم إستخدمها
والسلام عليكم ورحمه الله وبركاته