تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس السادس والستون - العودة إلى linq
#1
كاتب الموضوع : أحمد جمال

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


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

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

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


كود :
from d in developers
where d.Language =="C#"
select d.Name;
هذه هي نفسها جملة الاستعلام التي كنا نكتبها بالشكل التالي :

كود :
select name from developers where language="C#"
ولكن الآن لم نعد نحتاج لوجود قاعدة بيانات لتنفيذ جملة الاستعلام هذه عليها ، بل صار بامكاننا تطبيقها على مصفوفة بالشكل التالي :


كود :
public class Developer
{
public string Name;
public string Language;
}
Developer[] developers = new Developer[] { new Developer { Name = " Ahmed", Language="C#" }, new Developer { Name="Khaled", Language="Java", new Developer { Name="Ali", Languag="C++"} };
ومن ثم نكتب جملة استعلام بسيطة بالشكل التالي - راجع دروس ال IEnumerable - :

كود :
IEnumerable<string> LINQresult =
from d in developers
where d.Language =="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;
}}}
تم الشكر بواسطة:
#2
ترتيب جمل الاستعلام :

تعودنا في جمل الاستعلام على ترتيب 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]
ضع هذه الصيغة العامة في بالك فقط ، سنتعرف عليها خلال عملنا في هذه الدروس إن شاء الله ...
}}}
تم الشكر بواسطة:
#3
بالنسبة لدوال LINQ ، هذه هي الدوال التي كنا قد عرضناها سابقاً :


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





















}}}
تم الشكر بواسطة:
#4





















}}}
تم الشكر بواسطة:
#5
كاتب المشاركة : أحمد جمال
























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



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


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