المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : linQ to sql data الأستعلام من خلال لينك. وروعتها فى الأداء


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 وكيف سيتم إستخدمها


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