משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יבינו Lambda Expressions ויחליפו לולאות foreach ידניות ב-Where/Select/OrderBy.

בסוף השיעור הסטודנטים צריכים: לכתוב Lambda בסיסית, לסנן ולמפות אוסף עם LINQ, ולהסביר למה LINQ לא משנה את האוסף המקורי.

דגש קריטי: התחילו תמיד מהגרסה הידנית (foreach+if+רשימה חדשה) לפני LINQ — הניגוד הישיר הוא מה שמצדיק את התחביר החדש.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהראו סינון ידני עם foreach+if — “5 שורות לדבר פשוט”
הרעיון: Lambda15 דקותs => s.Age >= 18 — הסבירו כפונקציה אנונימית
הרעיון: Where15 דקותאותו סינון, שורה אחת
הרעיון: Select15 דקותמיפוי, הדגישו שינוי טיפוס אפשרי
שרשור Where+Select10 דקותדוגמה משולבת
OrderBy + “לא משנה מקור”15 דקותקריטי להדגים ש-students נשאר לא-ממוין
תרגול מודרך15 דקותתרגיל 1+2

דגשים להעברת השיעור

  • Lambda היא נקודת החיכוך התחבירית העיקרית של השיעור — תנו לה זמן משלה, אל תמהרו ישר ל-Where.
  • ההדגמה ש-OrderBy לא משנה את המקור (בניגוד ל-.Sort() שכבר מוכר) היא קריטית — בלבול נפוץ מאוד, שווה זמן נפרד ולא רק הערת אגב.
  • אם יש זמן, שווה להראות .ToList() ולהסביר בקצרה ש-LINQ “עצל” (Deferred Execution) — לא להעמיק, רק לתת אינטואיציה שהחישוב בפועל קורה רק כשצריך את התוצאה.

מושגים

LINQ — מתודות מובנות על אוספים לסינון/מיפוי/מיון. Lambda Expression — פונקציה אנונימית קצרה (s => expr). Where — סינון. Select — מיפוי/טרנספורמציה. OrderBy/OrderByDescending — מיון, מחזיר עותק חדש.


תרגיל חשיבה

שאלת פתיחה: “אם OrderBy היה משנה את הרשימה המקורית (כמו .Sort()), אילו באגים אפשריים היו נוצרים בקוד שמניח שסדר הרשימה לא משתנה?”

מהלך: תנו לסטודנטים לחשוב על תרחיש — קוד במקום אחר בתוכנית שמסתמך על הסדר המקורי (למשל אינדקס ספציפי) היה נשבר בשקט אחרי קריאה ל-OrderBy במקום אחר לגמרי בקוד. הובילו לתובנה: LINQ “בטוח” בדיוק כי הוא לעולם לא משנה קלט קיים — עקרון שמזכיר את ה-Value מול Reference שנלמד קודם, רק ברמת אוספים.

מה המרצה מראה בסוף: הריצו students.OrderBy(s => s.Age) ומיד אחר כך הדפיסו את students המקורית — הראו שהיא עדיין בסדר המקורי, לא הממוין. לצד זאת, הריצו students.Sort() (מ-IComparable, מהיחידה הקודמת) והראו שהפעם students עצמה כן השתנתה — ניגוד ישיר בין שתי הגישות.