eshrag.net
08-09-2010, 12:50 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
الحمد لله والصلاة والسلام على رسول الله وعلى آله وصحبه أما بعد:
موضوعنا اليوم يخص linQ لغه الأستعلامات الجديده من مايكروسوفت لعام 2008 . بصراحه لم أجد من شرح linq من قبل فقررت أن أشرح بعض الجمل والشروط لها لعلها تكون أفضل من ado.net فى الأستعلامات . وأعتقد أن هذا أول موضوع لى فى المشاغب من 9 شهور . وأنا أدعو الله أن تكون رجعه خير إن شاء الله .
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
مسأله واحد : لو أنا أريد أستنتاج الحروف الفرديه من مصفوفه معين ولتكن كالأتى
كود PHP:
Dim num As Integer() = {1, 5, 7, 10, 34, 54}
Dim oddNum = _
From number In num _
Where number Mod 2 0 _
Order By number Descending _
Select number
شرح الكود
from number in num
هنا يقوم المترجم من وراء الكواليس بتحديد نوع الnumber ويجعله Integer لأنه بالطبع وجد أن In num
where number mod 20 أى عندم يكون الرقم لا يقبل القسمه على 2
order by number descending تعنى ترتيب الأرقام تنازلياً
select number وهنا من الغريب فى هذه اللغه أنك من الممكن عدم كتابه select number لأن البرنامج يستطبع معرفه ماذا تريد
كيفيه إظهار النتائج فى listbox مثلاً سيتم عن طريق for each loop
كود PHP:
For Each number As Integer In oddNum
listbox1.items.add(number)
Next
هذه هى النتائج
http://a.yfrog.com/img22/3703/regioncapture.gif
ومن هنا أخوانى يمكن أن تستخدم linq to objects فى الأستعلام داخل الكلاسات
يعنى مثلاً لو عندنا كلاس خاص بعلومات عن المرضى فى مستشفى معينه
وكيفيه إنشاء الكلاس هيكون بالكود الأتى
كود PHP:
Public Class Actor
Private _firstName As String
Public Property FirstName() As String
Get
Return _firstName
End Get
Set(ByVal value As String)
_firstName = value
End Set
End Property
Private _lastName As String
Public Property LastName() As String
Get
Return _lastName
End Get
Set(ByVal value As String)
_lastName = value
End Set
End Property
Private _birthDate As Date
Public Property BirthDate() As Date
Get
Return _birthDate
End Get
Set(ByVal value As Date)
_birthDate = value
End Set
End Property
Private _country As String
Public Property Country() As String
Get
Return _country
End Get
Set(ByVal value As String)
_country = value
End Set
End Property
End Class
وتصميم الكلاس عن طريق الdesign بهذا الشكل
http://img291.imageshack.us/img291/4226/21266941.gif
الفكره حالياً كيفيه إضافه مرضى إلى هذا الكلاس بإستخدام Linq
أول شىء الفرق بين الإضافتين فى الfunctions وليكن patlist()
بالطريقه العاديه سيتم تعريف متغير من الكلاس الموجود
كود PHP:
dim pat as new patients
pat.firsname = "mohammed"
pat.secondname = "ali"
pat.country = "egypt "
pat.birthdat = #2/5/1989#
patients.add(pat)
أما بطريقه لينك
كود PHP:
Dim pat1= patlist()
Dim julypat = _
From pats In patients_
Where pats.BirthDate.Month = 7 _
Order By pats.LastName, pats.FirstName _
Select pats
وهنا نجد أن with تعود على الخصائص الموجوده فى الكلاس patients
كيفيه عمل أستعلام من الكلاس بإستخدام linq
اقتباس:
Dim patients= patlist()
Dim julypats = _
From pat In patients_
Where pat.BirthDate.Month = 7 _
Order By pat.LastName, pat.FirstName _
Select pat
من وهذا الأستعلام نريد المرضى الذين أنجبوا فى شهر يوليو
.................................................. ...............................................
والله أخوانى حاسس أنى لم استطع توصيل المعلومه جيداً ولكنى سأحاول تعديل شرحى فى الداتا باس لأنها الأهم
ويارب أكون قدرت أوصل المعلومه لكم .. وسيتم شرح dataset قريباً بإذن الله
هذه كانت مقدمه بسيطه linq وكيف سيتم إستخدمها
والسلام عليكم ورحمه الله وبركاته
السلام عليكم ورحمه الله وبركاته
الحمد لله والصلاة والسلام على رسول الله وعلى آله وصحبه أما بعد:
موضوعنا اليوم يخص linQ لغه الأستعلامات الجديده من مايكروسوفت لعام 2008 . بصراحه لم أجد من شرح linq من قبل فقررت أن أشرح بعض الجمل والشروط لها لعلها تكون أفضل من ado.net فى الأستعلامات . وأعتقد أن هذا أول موضوع لى فى المشاغب من 9 شهور . وأنا أدعو الله أن تكون رجعه خير إن شاء الله .
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
مسأله واحد : لو أنا أريد أستنتاج الحروف الفرديه من مصفوفه معين ولتكن كالأتى
كود PHP:
Dim num As Integer() = {1, 5, 7, 10, 34, 54}
Dim oddNum = _
From number In num _
Where number Mod 2 0 _
Order By number Descending _
Select number
شرح الكود
from number in num
هنا يقوم المترجم من وراء الكواليس بتحديد نوع الnumber ويجعله Integer لأنه بالطبع وجد أن In num
where number mod 20 أى عندم يكون الرقم لا يقبل القسمه على 2
order by number descending تعنى ترتيب الأرقام تنازلياً
select number وهنا من الغريب فى هذه اللغه أنك من الممكن عدم كتابه select number لأن البرنامج يستطبع معرفه ماذا تريد
كيفيه إظهار النتائج فى listbox مثلاً سيتم عن طريق for each loop
كود PHP:
For Each number As Integer In oddNum
listbox1.items.add(number)
Next
هذه هى النتائج
http://a.yfrog.com/img22/3703/regioncapture.gif
ومن هنا أخوانى يمكن أن تستخدم linq to objects فى الأستعلام داخل الكلاسات
يعنى مثلاً لو عندنا كلاس خاص بعلومات عن المرضى فى مستشفى معينه
وكيفيه إنشاء الكلاس هيكون بالكود الأتى
كود PHP:
Public Class Actor
Private _firstName As String
Public Property FirstName() As String
Get
Return _firstName
End Get
Set(ByVal value As String)
_firstName = value
End Set
End Property
Private _lastName As String
Public Property LastName() As String
Get
Return _lastName
End Get
Set(ByVal value As String)
_lastName = value
End Set
End Property
Private _birthDate As Date
Public Property BirthDate() As Date
Get
Return _birthDate
End Get
Set(ByVal value As Date)
_birthDate = value
End Set
End Property
Private _country As String
Public Property Country() As String
Get
Return _country
End Get
Set(ByVal value As String)
_country = value
End Set
End Property
End Class
وتصميم الكلاس عن طريق الdesign بهذا الشكل
http://img291.imageshack.us/img291/4226/21266941.gif
الفكره حالياً كيفيه إضافه مرضى إلى هذا الكلاس بإستخدام Linq
أول شىء الفرق بين الإضافتين فى الfunctions وليكن patlist()
بالطريقه العاديه سيتم تعريف متغير من الكلاس الموجود
كود PHP:
dim pat as new patients
pat.firsname = "mohammed"
pat.secondname = "ali"
pat.country = "egypt "
pat.birthdat = #2/5/1989#
patients.add(pat)
أما بطريقه لينك
كود PHP:
Dim pat1= patlist()
Dim julypat = _
From pats In patients_
Where pats.BirthDate.Month = 7 _
Order By pats.LastName, pats.FirstName _
Select pats
وهنا نجد أن with تعود على الخصائص الموجوده فى الكلاس patients
كيفيه عمل أستعلام من الكلاس بإستخدام linq
اقتباس:
Dim patients= patlist()
Dim julypats = _
From pat In patients_
Where pat.BirthDate.Month = 7 _
Order By pat.LastName, pat.FirstName _
Select pat
من وهذا الأستعلام نريد المرضى الذين أنجبوا فى شهر يوليو
.................................................. ...............................................
والله أخوانى حاسس أنى لم استطع توصيل المعلومه جيداً ولكنى سأحاول تعديل شرحى فى الداتا باس لأنها الأهم
ويارب أكون قدرت أوصل المعلومه لكم .. وسيتم شرح dataset قريباً بإذن الله
هذه كانت مقدمه بسيطه linq وكيف سيتم إستخدمها
والسلام عليكم ورحمه الله وبركاته