מדריך 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) וזה בעצם מה שקרה – הוגדרו מספר רב של Extension Methods לאובייקט: ולכן כל האוספים יכולים להשתמש במגוון רחב של מתודות חדשות. לדוגמא כדי לבדוק האם יש ברשימה את הערך 10. דוגמא נוספת: מוציא מהרשימה את כל המספרים הזוגיים וממיר אותם למחרוזת, מה שבסופו של דבר יחזיר לי רשימה חדשה של מחרוזות עם מספרים זוגיים. פורסם במקור בבלוג של שלמה גולדברג (הרב דוטנט) – מרצה ויועץ במכללת סלע
אם נרצה להיות יותר חכמים נגדיר את Filter כ – Extension Methods לכל List
IEnumerable<T>
if (list.Any(x => x == 10)) { }
var evenIdsAsString = list.Where(x => x % 2 == 0)
.Select<int, string>(x => x.ToString());
ובעזרת רשימת המתודות ניתן לכתוב קוד נקי ופשוט יותר.
תגובות בפייסבוק