מדריך LINQ – כתיבת קוד שמדמה LINQ
נניח שאנחנו רוצים לכתוב מתודה חדשה שיודעת לפלטר List של int לפי תנאי שהיא מקבלת כפרמטר, נוכל לכתוב מתודה כזאת:
static List<int> Filter(List<int> source, Predicate<int> prediacte) { var newList = new List<int>(); foreach (var item in source) { if (prediacte(item)) newList.Add(item); } return newList; }
והשימוש בה יהיה כך:
List<int> list = Enumerable.Range(0, 50).ToList(); var evenList = Filter(list, x => x % 2 == 0);
כמו שאפשר לראות השתמשנו במתודה ושלחנו אליה את האובייקט המקורי ומימוש ל Lambda Expressions ל – Prediacte (אמורה לקבל פונקציה שתקבל T ותחזיר bool)
אם נרצה להיות יותר חכמים נגדיר את Filter כ – Extension Methods לכל List
וזה בעצם מה שקרה – הוגדרו מספר רב של Extension Methods לאובייקט:
IEnumerable<T>
ולכן כל האוספים יכולים להשתמש במגוון רחב של מתודות חדשות. לדוגמא
if (list.Any(x => x == 10)) { }
כדי לבדוק האם יש ברשימה את הערך 10. דוגמא נוספת:
var evenIdsAsString = list.Where(x => x % 2 == 0) .Select<int, string>(x => x.ToString());
מוציא מהרשימה את כל המספרים הזוגיים וממיר אותם למחרוזת, מה שבסופו של דבר יחזיר לי רשימה חדשה של מחרוזות עם מספרים זוגיים.
ובעזרת רשימת המתודות ניתן לכתוב קוד נקי ופשוט יותר.
פורסם במקור בבלוג של שלמה גולדברג (הרב דוטנט) – מרצה ויועץ במכללת סלע
תגובות בפייסבוק