99. let keyword

בהמשך לשבוע שאילתא מובנית שפה,

נכיר היום את הkeyword ששמו let.

בדומה לטיפ של אתמול, לפעמים אנחנו רוצים לא לגשת לProperty יותר מפעם אחת עבור כל איטרציה של שאילתא,

ומצד שני, אנחנו לא רוצים לפצל את השאילתא לשתי שאילתות (מה שאנחנו מקבלים באמצעות המילה into)

נוכל לעשות זאת באמצעות הKeyword let:

1
2
3
4
5
6
IEnumerable<string> children =
from person in family
let age = person.Age
where age < 12
select string.Format("{0} is {1} years old",
person.FirstName, age);

נניח למשל שגישה לProperty ששמו Age היא כבדה. באמצעות המילה let הגישה מתבצעת רק פעם אחת.

נוכל להשתמש בKeyword let, גם לפני וגם אחרי המילה where.

הקוד מתקמפל למשהו כזה:

1
2
3
4
5
6
IEnumerable<string> children =
family.Select(person => new {person, age = person.Age})
.Where(pair => pair.age < 12)
.Select(pair => string.Format("{0} is {1} years old",
pair.person.FirstName,
pair.age));

כלומר יכולנו לעשות אותו הדבר באמצעות המילה into, רק בכתיבה יותר ארוכה ופחות מובנת:

1
2
3
4
5
6
7
IEnumerable<string> children =
from person in family
select new {person, age = person.Age}
into pair
where pair.age < 12
select string.Format("{0} is {1} years old",
pair.person.FirstName, pair.age);

הKeyword הוא בעיקר טוב כדי לגשת לפונקציות כבדות פעם אחת בלבד.

המשך יום שאילתא מובנית שפה טוב

שתף