- الحصول على الرابط
- X
- بريد إلكتروني
- التطبيقات الأخرى
- الحصول على الرابط
- X
- بريد إلكتروني
- التطبيقات الأخرى
كتبت عن ال Extension Method وقلت أن الـ LINQ بتضيف ال method الخاص بيها باستخدام الـ Extension Method.
ال Data Structures فى #C مثل List و Array , بيعملوا implement ل IEnuramble interface و LINQ بتضيف ال methods لل IEnuramble interface بالتالى اى class بتعمل implement ل IEnuramble interface هتقدر تستخدم اى Extension Method ثم اضافتها بواسطة LINQ.
مثال:
- public class List<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IList<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.IReadOnlyList<T>, System.Collections.IList
اضافة ال where method إلى الـ IEnuramble interface
- public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate)
وبكدا اى class بتعمل implement لل IEnuramble interface هتقدر تستخدم الـ where.
مثال:
- List<string> fruits = new List<string> { "apple", "passionfruit", "banana", "mango", "orange", "blueberry", "grape", "strawberry" }
- IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6)
IQueryable interface
ال IQueryable interface ب extend من ال IEnuramble interface بالتالى اى Extension method هيتم اضافتها ل IQueryable interface بواسطة LINQ هتكون متاحه لأى class بتعمل implement ل IEnuramble او IQueryable.
- public interface IQueryable : System.Collections.IEnumerable
طب ليه LINQ تضيف Extension methods ل IEnuramble وفى نفس الوقت تضيف ال Extension method تانى لل IQueryable Interface مثل Where Method.
احنا شفنا ال Where Extension Method التى تم اضافتها إلى IEnuramble Interface ,بص عليها هتجد أن ال predicate من نوع Func .
تعالى بقى نشوف Where Extension Method المضافه إلى IQueryable interface.
- public static System.Linq.IQueryable<TSource> Where<TSource> (this
- , System.Linq.IQueryable<TSource> source
- (System.Linq.Expressions.Expression<Func<TSource,bool>> predicate
شوف الـ Predicate من نوع ايه , هتجده من نوع Expression وكتبت عن ال Expression وليه بنستخدمه.
ال IQueryable Interface يثم اضافة لها الـ LINQ Methods التى يتم استخدامها وعمل implementation لها من قبل query provider مثل الـ Entity Framework .
والمختصر أن Entity Framework يستخدم LINQ Extension methods المضافه إلى IQueryable Interface بحيث لو هيتم ارسال SQL Command ل Relational database هيكون قادر انه يقرأ الكود اللى احنا كتبناه باستخدام ال Expression Tree ثم يحوله ل SQL Command.
......
تعليقات
إرسال تعليق