PracticU

שאילתת LINQ
על אוספים רגילים

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › שאילתת LINQ על אוספים רגילים
מילון מושגים:
LINQ - יכולת ב-.NET לכתוב שאילתות על אוספים ומקורות נתונים ישירות בתוך קוד C# בתחביר אחיד.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.

שאילתת LINQ על אוספים רגילים
LINQ לא קשור למסדי נתונים דווקא. הוא עובד על כל אוסף ב-C#, ואפשר להשתמש בו כאילו האוסף הוא טבלה.
הדוגמה בפרויקט נפרד
1. הנתונים: בפרויקט חדש, בלי Entity Framework, מוגדרת מחלקה Pizza עם Diameter, Slices, Toppings ו-Price. ב-Main נוצר אוסף של 100 פיצות עם ערכים אקראיים.
2. השאילתה: בתחביר SQL-Like, from p in pizzas.
3. סינון: where p.Diameter >= 25 && p.Slices >= 6.
4. מיון: orderby p.Price, p.Toppings descending.
5. בחירה: select new עם Diameter, Slices, Toppings, Price ובנוסף Vat שמחושב כ-p.Price * 0.17m. האות m הופכת את הערך ל-decimal, שמתאים לכסף, כי Price הוא decimal.
6. הרצה: query.ToList() ואז foreach עם var להצגת הרשומות. חזרו פחות פיצות מהמקור, רק אלה שעמדו בתנאים.
שימו לב
- אפשר לכתוב את אותה שאילתה גם ב-Method-Like. יצירת אובייקט חדש עם שדה מחושב מראה שאפשר להרחיב את מה שהיה קודם.
- אותו עיקרון עובד גם על אוסף של מספרים שלמים או של אובייקטים אחרים.
אחרי ההרצאה תוכלו להשתמש ב-LINQ כדי לסנן, למיין ולהמיר כל אוסף בזיכרון.

פרקי ההרצאה: שאילתת LINQ על אוספים רגילים

  1. 00:00

    LINQ אינו תלוי בדאטאבייס

  2. 00:38

    יצירת אוסף פיצות רנדומלי

  3. 01:32

    שאילתה בתחביר SQL-Like

  4. 02:09

    מיון לפי מחיר ותוספות

  5. 02:49

    חישוב VAT ואובייקט חדש

תמלול ההרצאה: שאילתת LINQ על אוספים רגילים

הטקסט המלא של הדקות הראשונות בהרצאה «שאילתת LINQ על אוספים רגילים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    חשוב להבין משהו מאוד מעניין בנוגע לשפת לינק. שפת לינק לא קשורה לדאטאבייסים. שפת לינק קשורה לאנטיטי פריימורק ולקולקשנים, ואנטיטי פריימורק לא חייבת לעבוד רק על דאטאבייס.

  2. 00:17

    מה שאנחנו רואים כאן זה בעצם דוגמה אחרת לגמרי, פתחתי פרויקט חדש ואין לו שום קשר לדאטאבייס. יש לי פה מחלקה פיצה, יש לה קוטר, סלייסס, מספר משולשים, טופינגס, מספר תוספות ופרייס מחיר.

  3. 00:38

    אין לי פה שום קשר לאנטיטי פריימורק קור של דטאבייס, יש לי כאן מיין, אנחנו יוצרים קולקשן של פיצות ומוסיפים לו 100 פיצות בעלי ערכים רנדומליים לחלוטין, הנה פונקציה שמחזירה ערך רנדומלי, יש לנו קוטר רנדומלי, מספר משולשים רנדומלי, מספר תוספות רנדומלי, ומחיר שנקבע בהתאם לפריטים הקודמים.

  4. 01:04

    ומה שאנחנו רוצים לעשות זה איזושהי שאילתה על הקולקשן הזה, כאילו שאנחנו דאטאבייס, וזה מה שיפה בשפת לינק, היא מאפשרת לכם כאילו להשתמש בשפת sql, לא באמת שפת sql, זה שפת לינק, על קולקשנים ולא רק על דאטאבייס או קולקשנים שהגיעו מדאטאבייס.

  5. 01:22

    אז בואו נניח שאנחנו רוצים לעשות פה איזשהו חיתוך, איזושהי שאילתה, לא צריך שאילתה מורכבת, בטח שלא ג'וין, בגלל שאין לנו שני קולקצ'נים, יש לנו רק אחד.

  6. 01:29

    אבל בואו נניח שאני רוצה להביא את כל הפיצות בעלי קריטריונים מסוימים. נעשה את זה כמובן ב-SQL-like syntax, כי זה קצת יותר נוח, אפשר כמובן לעשות את זה, את אותו הדבר במתוד-לייק סינטקס, ואנחנו פונים לאוסף שלנו, פיצאז, או ליתר דיוק From P in Pizzas,

  7. 01:50

    ואז אנחנו יכולים להגיד where, מה אנחנו בעצם מחפשים? אנחנו מחפשים רק דיאמטר שהוא גדול שווה ל-25 and p.slices יש לנו בין 4 ל-8 אז בואו נניח שהslices גדול שווה ל-6 ניקח slices גדול שווה ל-6 ובואו ניקח order by p.price בואו נגיד שאנחנו רוצים then buy לפי p.toppings סנדינג סדר יורד ולאחר מכן סלקט ניו ובואו נבחר לעצמנו אובייקט חדש יש לנו את הדיאמטר

  8. 02:34

    פי נקודה סלייסז פי נקודה טופינגס וניקח גם את הפרייס שזה יהיה פי נקודה פרייס אבל גם את הוואט והוואט זה המע"מ value added text פי נקודה פרייס 0.17 אנחנו יכולים כאילו לקחת איזשהו אובייקט חדש שלא היה לפני זה כמובן שאם הייתי שם פה את p בלבד אז הייתי מקבל את אותו אובייקט p אבל יצרנו אובייקט חדש שיש בו את כל מה שהיה

  9. 03:08

    קודם וגם vat הוא רוצה ממני שאני אשים פה m מפני שvat זה פרייס זה דצימל ו-0.17 זה דאבל אז הפכתי אותו לדצימל למה m קיצור של money כי דצימל זה בשביל כספים בואו ניקח ליסט פיצה נקרא לו selected pizzas שווה query.to list ונרוץ for each item in selected נציג אייטם,

לקורס המלא: קורס Entity Framework Core

ההרצאה הקודמת: שאילתת LINQ מורכבת - מסוג SQL-Like

ההרצאה הבאה: יצירת שאילתות View - דוט-נט Core

הרצאות קשורות מקורסים אחרים

  • LINQ
  • LINQ ל- Objects

קורסים נוספים במסלול

  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio