
GiftID, שם המתנה, מחיר ושם קבוצת הגיל. מצרפת את Gifts ל-HGroups לפי HGroupId, מסננת מחיר בין 10 ל-40, וממיינת לפי מחיר בסדר יורד ואז לפי שם בסדר עולה.Join מקבל ארבעה ארגומנטים: האוסף השני (db.HGroups), המפתח באוסף הראשון (gift.HGroupId), המפתח באוסף השני (hGroup.Id), ופונקציה שיוצרת אובייקט אנונימי עם Gift ו-HGroup.Where, OrderBy ו-Select מקבלים פרמטר אחד, ובשאילתת join צריך להעביר להם שתי טבלאות. האובייקט הזה (בדוגמה joined) מחזיק את שתיהן.joined.Gift.Price גדול או שווה ל-10 וקטן או שווה ל-40. אפשר לסנן גם לפי עמודות של HGroup, למשל גיל מינימום.OrderByDescending לפי המחיר, ואחריו ThenBy לפי השם. ThenByDescending נותן מיון משני יורד, וניתן לשרשר ThenBy כמה פעמים.GiftId, GiftName, Price ו-HGroup. אפשר להדפיס אותו ישירות כי יש לו ToString מובנה.הטקסט המלא של הדקות הראשונות בהרצאה «שאילתת LINQ מורכבת מסוג Method-Like» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
נבצע שאילתה הרבה יותר מורכבת מהשאילתה הזאת. נקרא לזה הפעם ארבע. אנחנו בפונקציה מספר ארבע. Gifts by Price Range, מינימום 10, מקסימום 40, יש לנו פה את ה-context, ואנחנו רוצים שאילתה הרבה יותר מורכבת.
בואו נבין רגע מה השאילתה שאנחנו רוצים לראות. אז אנחנו רוצים שאילתת join כזאת, ויש לנו Select, gift.giftid, גיפטס נקודה גיפט איי די, גיפטס נקודה ניים אז גיפט ניים, גיפטס נקודה פרייס וזה בסדר ואנחנו רוצים גם את h-group אז יש לנו פה h-groups נקודה ניים ונקרא לו h-group.
כל זה אנחנו רוצים from gifts join h-groups זה בעצם שמות של טבלאות זה גיפטס בצורה כזאת ו-h-groups זה טבלה ויש לנו פה gift join h-groups where יש לנו פה את ה-where שביצענו, price אז זה gifts.price יש לנו כאן עוד פעם gifts.price לבסוף יש לנו order by gifts.price בצורה כזאת יש לנו אפילו בוא נעשה אותו קצת יותר מורכבת
Order by Gifts Descending וזה עושה לנו בסדר יורד ונעשה מיון משני אפילו. מזכיר לכם מיון משני אם יש לי כמה רישומות עם אותו הפרייס אז בינם לבין עצמם איך אנחנו רוצים למיין.
אז בואו נגדיר שהמיון המשני הוא יהיה מיון לפי ה-Gifts.Name בסדר עולה אז אני לא צריך פה לרשום ASC זה בסדר עולה ואני רוצה to select כמו שאמרתי רק את החבר'ה האלה. אז אנחנו רואים פה כבר שאילתה הרבה יותר מורכבת, כמובן שיש שאילתות הרבה יותר מורכבות מזאת, אבל היא כבר ברמה יותר גבוהה.
אנחנו רוצים לראות אותה גם איך עושים את זה במתוד לייק, וכמובן בסרטון הבא גם איך עושים את זה ב-SQL לייק. גיפטס שווה. קודם כל הקולקשן שלנו זה גיפטס.
לאחר מכן אנחנו רוצים לבצע את הג'וין. כל אחת מהפונקציות האלה מקבלות שוב איזשהו למדה אקספרשן כזה, ויכול להיות שהן מקבלות גם יותר פרמטרים. אז join אומר תקשיב בוא תגיד לי לפי איזה טבלה נוספת או קולקשן נוסף אתה רוצה לבצע את ה-join שלך זה יהיה db.h groups פה אני נותן את הקולקשן
השני פה אני נותן את הראשון ב-join אני נותן את השני כלומר אני עושה טבלה ראשונה join טבלה שנייה ואז הוא אומר לי טוב תן לי עכשיו בעצם לפי מה אתה רוצה לבצע ויש לנו פה כמה דברים שאנחנו מספקים דבר ראשון מהקולקשן הראשון עבור כל גיפט מה בעצם שווה למה?
האמת שאני רואה ששכחתי כאן למעלה את ה-on gifts.hgroupid שווה ל-hgroups.hgroupid. זה ה-on שיש לנו בשאילתת join. אז אני אומר לו, תשמע, עבור כל גיפט יש לי h-group-id ואני רוצה שתשווה אותו.
וכבר אנחנו רואים שיש לנו כאן את החלק הזה. From, גיפט נמצא פה, join h-groups נמצא פה, ואנחנו מתחילים עם ה-on. אנחנו אומרים לו עבור כל גיפט, אנחנו רוצים שתשווה את ה-h-group-id הזה ל-id הזה שלו, של ה-h-group.
קולקשן ראשון מגיע מכאן, קולקשן שני מגיע, מגיע מכאן, את מה להשוות למה. לאחר מכן אנחנו יוצרים איזושהי למדה אקספרשן נוספת ואומרים לו כזה דבר. אנחנו מקבלים את זה לפה ואת זה לפה.
זאת אומרת, יש לנו פה פונקציה נוספת שאנחנו נותנים והמערכת הולכת לקרוא לה ולשלוח את שני החבר'ה האלה ואז אנחנו אנחנו אומרים לו מה האובייקט שאנחנו רוצים להחזיר.
אנחנו רוצים להחזיר אובייקט שמכיל שני פרמטרים. הוא מכיל את ה-gift ואת ה-age group. מה זה האובייקט המוזר הזה? למה יש פה כל כך הרבה דברים שאנחנו מעבירים לפונקציית join?
שימו לב, אנחנו מעבירים לה כבר מספר פרמטרים. פרמטר ראשון או ארגומנט ראשון זה הטבלה השנייה. אחר כך יש לנו ארגומנט שני, למדה אקספרשן, עוד למדה אקספרשן, עוד למדה אקספרשן, מה קורה פה?
מה שאנחנו רוצים לעשות עכשיו זה where, אבל אני מזכיר לכם, where מקבלת ארגומנט אחד. כאן למעלה ראינו שהיא מקבלת רק גיפט אחת, כי אנחנו כאילו רצנו על קולקשן אחד, אז היא מקבלת ארגומנט אחד, שדרכו אנחנו אומרים מה אנחנו רוצים לבחור.
גם order by, גם סלק ארגומנט, או ליתר דיוק למדה אקספרשן שמקבלת ארגומנט אחד. אבל כשאנחנו מתעסקים בג'וין יש לנו מינימום שני ארגומנטים שאנחנו עכשיו צריכים להעביר לווייר ולאורדר ביי ולסלקט אז האובייקט הזה שאנחנו מחזירים כאן זה האובייקט שמייצג את שני הארגומנטים והוא זה שהולך להישלח לפונקציה ווייר.
זאת הסיבה שיש פה את רמת המורכבות הזאת. לפני שנעבור לווייר בואו עוד פעם נבין מה בעצם אנחנו רואים. יש לנו כאן את הקולקשן הראשון join יש לנו את הקולקשן השני עד כאן הגיוני.
שני החברה האלה זה החלק של ה-on מי אנחנו רוצים להשוות למי אנחנו רוצים להשוות עבור כל gift at h-group ID שהוא ה-ID של h-group זה הגיוני לגמרי זה בדיוק כמו ה-on הזה. כל הארגומנט האחרון זה אובייקט שאנחנו בעצם מייצרים והוא זה שהולך להישלח לכאן זאת אומרת מכל gift של גיפט ו-H Group של טבלת ה-H Groups, אנחנו מייצרים אובייקט אנונימי חדש.
וכמובן שיכולנו לשנות פה את השמות ולהגדיר שאלה יהיו שמות אחרים, G שווה ו-A שווה, אבל בכוונה אני רוצה להשאיר את השמות, כי להשתמש בשם גיפט ו-H Group זה קצת יותר ברור.
אז האובייקט הזה הולך להישלח לכאן, ושימו לב שיש לו שני פרמטרים, גיפט ו-H Group. זאת אומרת שכאן ב-where אנחנו לא מקבלים גיפט ואנחנו לא מקבלים h-group.
אנחנו מקבלים את אותו אובייקט שהחזרנו כאן שמכיל בתוכו גיפט ו-h-group. אז אנחנו נקרא לו ג'וינד ואם אנחנו נסתכל רגע מה יש בתוך ג'וינד, ג'וינד יש בו את גיפט ויש בו את h-group.
אם נניח הייתי משנה את השמות האלה לדוגמא מיי גיפט ומיי אייג' גרופ שווה, אז הג'וין היה מכיל את מיי גיפט ואת מיי אייג' גרופ, כי אנחנו בסופו של דבר רוצים שבווייר ובאורדר ביי ובסלקט יהיה לנו גם את הגיפט אובייקט מהקולקשן הזה וגם אייג' גרופ מהקולקשן הזה,
כי אנחנו מתעסקים בג'וין. אז אלו האובייקטים הנה הגיפט מהי גיפט והנה האובייקט שמתאר כל פריט מטבלת ה-H Groups אני לא אקרא להם מי שם קצת פחות נכון בגלל זה השארתי את זה באותו השם אבל הבנו את הקשר בין השמות אז מה אנחנו רוצים to select סליחה מה אנחנו רוצים to wear אנחנו רוצים ב-wear להביא לפי המחיר כמו שעשינו מקודם הנה בין 10 ל-40.
מטבלת ה-Gifts אנחנו רוצים שהאובייקט GiftPrice יהיה גדול שווה ל-10. And מטבלת JoinGift אנחנו רוצים שה-Price יהיה קטן שווה ל-40.
שימו לב שיכלנו להוסיף גם מידע שקשור לטבלת