אחד הKeywordים הפחות מוכרים בLINQ הוא into,
נניח יש לנו שליפה כזאת:
1 2 3 4 5
| IEnumerable<string> childrenWithShortName = from person in family where (person.Age <= 12) && (person.FirstName.Length <= 3) select person.FirstName;
|
זו שאילתא שמוצאת את כל הילדים שיש להם שם קצר
שימו לב לסחבת - אנחנו ניגשים לאותו Property כמה פעמים, מה שלא הכי יפה. (ראו גם טיפ 48 כדי להבין למה חשוב לא לעשות את זה)
במקום זאת נוכל לפצל את השאילתא לשתי שאילתות, באמצעות הkeyword ששמו into:
1 2 3 4 5 6 7
| IEnumerable<string> childrenWithShortName = from person in family where person.Age <= 12 select person.FirstName into first where first.Length <= 3 select first;
|
מה שעשינו זה הכנסנו את הProperty ששמו FirstName לתוך משתנה ששמו first, וכך אנחנו ניגשים אליו רק פעם אחת, כפי שמציע טיפ מספר 48.
מדובר כאן ביותר מסמנטיקה, הintoמפצל את השאילתא לשתי שאילתות. למה הכוונה? אחרי הintoלא נוכל לגשת למשתנים בScope הקודם של השאילתא, לדוגמה לperson:
1 2 3 4 5 6 7 8
| IEnumerable<string> childrenWithShortName = from person in family where person.Age <= 12 select person.FirstName into first where (first.Length <= 3) && (person.LastName == "Cohen") select first;
|
הקוד שכתבנו בעצם מתקמפל לשרשור ההגיוני הבא:
1 2 3 4
| IEnumerable<string> childrenWithShortName = family.Where(person => person.Age <= 12) .Select(person => person.FirstName) .Where(first => first.Length <= 3);
|
המשך יום שאילתא מובנית שפה טוב