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

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


تعتبر ال Query Expressions هي الخطوة الأولى والأساسية في عالم LINQ ، سنتعرف عليها هنا باختصار شديد كميزة جديدة من مميزات .net 2008 فيما سنؤجل باقي التفاصيل للفصول القادمة حينما نبدأ التعامل الفعلي مع قواعد البيانات .

لنرى هذا المثال مثلاً :

كود :
[FONT=Tahoma]from d in developers
where d.Language =="C#"
select d.Name;[/FONT]

هذا بالضبط هو محتوى جملة الاستعلام التي تعودت على كتابتها سابقاً بالشكل التالي :

كود :
[FONT=Tahoma]select name from developers where language="C#"[/FONT]


إذن لماذا هذا الشكل الجديد ؟
في السابق كنا نقوم بارسال جملة الاستعلام ليتم تنفيذها في قاعدة البيانات وتعود بناتج على شكل DataReader أو مهما يكن ، أما الآن اصبحت جمل الاستعلام جزء من محتويات اللغة التي تقوم ببرمجتها .
لتعمل على LINQ فلا بد من توريد مجال الأسماء هذا :

كود :
[FONT=Tahoma]using System.Linq;[/FONT]


في الجزء الثاني سنعود إلى نقطة البداية لنفهم الموضوع منذ الخطوة الأولى .
}}}
تم الشكر بواسطة:
#2
الآن سنعود لنقطة البداية ، ال LINQ تعتمد على ان قاعدة البيانات هي عبارة عن Array أو أي جزء منها ، لذا سنجرب بعض العمليات على ال Array ، لنفترض الشكل التالي مثلاً :


كود :
string[] userNames = {"Ahmed", "Ali","Mohammed", "Ahmed","Ramy", "Khaled"};
*** لن اذكرك كثيراً بأنني هنا لا اهتم ب LINQ قدر ما اهتم بال Query Expressions ، الفارق هو ان الأولى خاصة بالتعامل مع قواعد البيانات بمختلف انواعها اما الثانية فهي تعلمك كيفية الكتابة فقط دون التطرق لخصائص قواعد البيانات .

هذه المصفوفة قد تكون قاعدة بيانات ، قد تكون ملف XML ، قد تكون أي شيء آخر ، الآن سنحاول بناء جملة استعلام لقراءة الاسماء التي تساوي "Ahmed"


كود :
IEnumerable<string> subset = from users in userNames
where users == "Ahmed" orderby users select users;
الناتج سيكون ايضاً array ، لذا يمكنك الآن طباعتها ببساطة بالشكل التالي :

كود :
foreach (string s in subset)
Console.WriteLine("Item: {0}", s);
يمكنك بالطبع استخدام اي دالة من دوال C# ، لذا فالجملة التالية صحيحة لعرض الاسماء اطول من ثلاث حروف :

كود :
IEnumerable<string> subset = from users in userNames
where users.Length > 3 orderby users select users;
ايضاً قد لا تكون قادراً على معرفة نوع البيانات الظاهر ، خصوصاً لو كنت تستعلم عن اكثر من حقل حيث ان الناتج لا بد ان يكون فئة ، هنا تظهر لنا فائدة ال var أو ال Dim بدون Data Type التي شرحناها سابقاً ، ايضاً ربما لا تعود جملة الاستعلام بنتيجة لذا سنسترجع هنا فائدة ال Nullable Types والتي شرحناها ايضاً في درس سابق .

طريقة أخرى لكتابة هذه الجمل باستخدام Lambada ، وسنتعرف عليها في مرحلة قادمة .

للتحويل إلى vb.net يمكنك مراجعة دروس الأخ النبهاني ومحمد سامر سلو حول LINQ ، بصراحة لم اكن قادراً على تطبيق عملية التحويل لذا اعتذر .

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

آخر مواضيعنا في هذا الدرس هو التعرف على المعاملات الخاصة ب LINQ ، اتوقع انه سيكون نوع من التكرار غير المطلوب ان اقوم بشرحها خصوصاً انها مشروحة بالكامل في كتاب ( إبدأ LINQ ) ، لذا سأقتبس هنا الجزء الخاص بشرحه بالكامل :

الكتاب بالكامل موجود هنا ، ما اطلبه منك تحديداً هو قراءة الصفحات من 27 إلى 42 :
http://vb4arb.com/vb/uploaded/18_01350219662.zip

لست أذكر مؤلف الكتاب تحديداً ولكن اتوقع انه الأخ محمد حمدي غانم ، إذا كنت قد أخطأت فأتمنى منكم التصحيح .

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

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



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


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