נחשפנו פעם שעברה לQuery Syntax של LINQ.
נציג כעת Pitfall נפוץ בעבודה עם Query syntax.
לפעמים אנחנו כותבים שאילתא כזאת:
|
|
זו שאילתא שמוצאת את כל האנשים במשפחה שהגיל שלהם הוא קטן או שווה לממוצע של הגיל של המשפחה.
הכל נראה טוב ויפה, אבל אם נזכר איך כל הסיפור הזה עובד, נזכר כי הוא מתרגם מאחורי הקלעים בסה"כ לשרשור הבא:
|
|
עכשיו אם נזכר איך עובד Where:
|
|
אז בעצם מתבצע קוד כזה:
|
|
מה שחשוב זו השורה בif. שימו לב שכל איטרציה מתבצע חישוב של הממוצע של הגיל של המשפחה. חישוב זה הוא סטטי לשאילתא, אבל מתבצע בכל פעם מחדש.
אם חישוב זה אורך זמן, זה גם עשוי לפגוע בצורה משמעותית בזמן הרצת השאילתא שלנו.
איך מתגברים על הpitfall הזה?
פשוט מחשבים את מה שסטטי לפני השאילתא:
|
|
כך החישוב מתבצע פעם אחת לפני הרצת השאילתא, במקום להתבצע עבור כל איטרציה…
שבוע טוב שאילתא מובנית שפה טוב