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

مشاهدة النسخة كاملة : الافتراضي الدرس السادس والستون : العودة إلى linq - دورة .net 2008


khaledbelal
03-11-2010, 03:56 PM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

بعد ان تعرفنا على بعض النقاط في عالم ADO.net ، جاء الدور لنتعرف على تقنية ******** Integrated Query او ما يعرف اختصاراً باسم LINQ ، وهي تقنية جديدة من مايكروسوفت تهدف كما اسلفنا في درس سابق إلى بناء استعلامات قوية يمكن التحكم فيها من خلال بيئة فيجوال ستوديو ، اضف إلى ذلك توحيد جملة الاستعلام مهما تكن نوعية مصدر قواعد البيانات الذي نتعامل معه سواء كان قاعدة بيانات أو XML File أو ملف نصي او ملف اكسيل أو خلافه .

لل LINQ ثلاث انواع رئيسية سنحاول التعرف على أجزائها هي :
LINQ to SQL – LINQ to XML – LINQ to Objects

أبسط أنواع الاستعلام هي الاستعلام مباشرة إلى متغير من نوع Array ، لنفترض المثال الذي شرحناه في مقدمتنا إلى LINQ قبل عدة دروس بالشكل التالي :


from d in developers
where d.******** =="C#"
select d.Name;
بدلا من ******* ضع كلمة L a n g u a g e مع حذف المسافات بين الاحرف

هذه هي نفسها جملة الاستعلام التي كنا نكتبها بالشكل التالي :

select name from developers where ********="C#"

ولكن الآن لم نعد نحتاج لوجود قاعدة بيانات لتنفيذ جملة الاستعلام هذه عليها ، بل صار بامكاننا تطبيقها على مصفوفة بالشكل التالي :


public class Developer
{
public string Name;
public string ********;
}
Developer[] developers = new Developer[] { new Developer { Name = " Ahmed", ********="C#" }, new Developer { Name="Khaled", ********="****", new Developer { Name="Ali", Languag="C++"} };

ومن ثم نكتب جملة استعلام بسيطة بالشكل التالي - راجع دروس ال IEnumerable - :

IEnumerable<string> LINQresult =
from d in developers
where d.******** =="C#"
select d.Name;

الآن اصبح بامكانك بكل بساطة طباعة الناتج بالشكل التالي :

froeach ( string s in LINQresult )
{
MessageBox.Show(s);
}

كما تلاحظ يمكنك استخدام اي معامل من المعاملات السابقة او عدمه ، فجملة كالتالي صحيحة ما دمت لا تحتاج الشرط :

IEnumerable<string> LINQresult =
from d in developers
select d.Name;

كما يمكنك ايضاً استخدام دالة C# عادية ضمن الشرط مثل دالة الطول بالشكل التالي :

IEnumerable<string> LINQresult =
from d in developers
where d.Name.Length > 3
select d.Name
orderby d.Name;



ترتيب جمل الاستعلام :

تعودنا في جمل الاستعلام على ترتيب Select From Where ، ولكننا في LINQ نستخدم Select لتكون هي الأخيرة دائماً ، السبب بكل بساطة هو ما يعرف باسم IntelliSense حيث اننا نود ان نعتمد على الفيجوال ستوديو ليظهر لنا الأعمدة التي يمكنها الظهور لنا ، فيما لو كتبنا Select قبل From فلن يستطيع الفيجوال ستوديو مساعدتك في تحديد الخيارات الموجودة لإنه لا يعرف اي جدول تريد أن تقرأ منه بعد .

جملة الاستعلام الكاملة :

from id in source
{ from id in source /
Join id in source on expr equals expr [into id] |
Let id = expr |
Where condition |
Orderby ordering, ordering, ... [Ascending | Descending]
}
Select expr |
Group expr by key
[into id query]

ضع هذه الصيغة العامة في بالك فقط ، سنتعرف عليها خلال عملنا في هذه الدروس إن شاء الله ...

بالنسبة لدوال LINQ ، هذه هي الدوال التي كنا قد عرضناها سابقاً :

http://vb4arab.com/vb/uploaded/3/01217282387.jpg



في المقدمة السابقة كنت قد احلتك إلى كتاب ( مبدأ إلى LINQ ) لكاتب مجهول لي حتى هذه اللحظة ، هنا سأضع صور من هذا الكتاب تحتوي على شرح الدوال الواحدة والخمسون .


http://vb4arab.com/vb/uploaded/3/01217282472.jpg



http://vb4arab.com/vb/uploaded/3/11217282472.jpg



http://vb4arab.com/vb/uploaded/3/21217282472.jpg



http://vb4arab.com/vb/uploaded/3/31217282472.jpg



http://vb4arab.com/vb/uploaded/3/41217282472.jpg



http://vb4arab.com/vb/uploaded/3/51217282472.jpg



http://vb4arab.com/vb/uploaded/3/61217282472.jpg



http://vb4arab.com/vb/uploaded/3/71217282472.jpg





http://vb4arab.com/vb/uploaded/3/81217282472.jpg



http://vb4arab.com/vb/uploaded/3/91217282472.jpg





http://vb4arab.com/vb/uploaded/3/01217282594.jpg



http://vb4arab.com/vb/uploaded/3/11217282594.jpg





http://vb4arab.com/vb/uploaded/3/21217282594.jpg



http://vb4arab.com/vb/uploaded/3/31217282594.jpg



http://vb4arab.com/vb/uploaded/3/41217282594.jpg



http://vb4arab.com/vb/uploaded/3/51217282594.jpg





http://vb4arab.com/vb/uploaded/3/61217282594.jpg



http://vb4arab.com/vb/uploaded/3/71217282594.jpg



http://vb4arab.com/vb/uploaded/3/81217282594.jpg



http://vb4arab.com/vb/uploaded/3/91217282594.jpg




http://vb4arab.com/vb/uploaded/3/01217282537.jpg





http://vb4arab.com/vb/uploaded/3/11217282537.jpg



http://vb4arab.com/vb/uploaded/3/21217282537.jpg



http://vb4arab.com/vb/uploaded/3/31217282537.jpg



http://vb4arab.com/vb/uploaded/3/41217282537.jpg



http://vb4arab.com/vb/uploaded/3/51217282537.jpg



http://vb4arab.com/vb/uploaded/3/61217282537.jpg



http://vb4arab.com/vb/uploaded/3/71217282537.jpg



http://vb4arab.com/vb/uploaded/3/81217282537.jpg



http://vb4arab.com/vb/uploaded/3/91217282537.jpg



نواصل دروسنا غداً مع التعرف على lambada واستخداماتها مع LINQ ....
والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .

mohamed nomeer
07-11-2010, 10:05 AM
جزاك الله خيرا