דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. איך ליצור שאילתת join בlinq to Object

איך ליצור שאילתת join בlinq to Object

מתוזמן נעוץ נעול הועבר ארכיון code613m
1 פוסטים 1 כותבים 210 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    החלטתי לנסות לכתוב קצת לתועלת הדורות הבאים (אם בכלל יהיו כאלה שעוד ישתמשו בזה כי הרי כולם היום משתמשים בSQL :lol: :lol: )
    אז חיפשתי היום אצל הרב גוגל שליט"א כיצד אני יוצר את השאילתא הנל (שמטרתה לאחד בין 2 טבלאות ע"פ שדה אחד מקושר)
    אני מחפש בליסט של תרומות ע"פ הפרמטרים שהמשתמש מזין, ואח"כ אני רוצה להזין לו את רשימת התורמים שתרמו את התרומות הנ"ל ושביחד עם זאת יוצגו לו גם נתוני התרומה.
    (כדי להציג לו רק את רשימת התורמים ללא נתוני התרומה - אין צורך להשתמש בJOIN אלא מספיק לכתוב לולאה מקוננת כך:

    List<Donor> donorSearch = new List<Donor>()
    foreach(Donation dona in donatFilter)
                    {
                        foreach(Donor donor in AddTorem.donors)
                        {
                            if (donor.Id == dona.IdDonor)
                                donorSearch.Add(donor);
                        }
                    }
    

    אולם אני רציתי ליצור ליסט חדש שיש בו גם חלק מהמאפיינים של העצם Donor (תורם) וגם חלק מהמאפיינים של העצם (תרומה) Donation.
    לכן כתבתי כך:

    var newlistDonors = from d in donorSearch
                                  join o in donatFilter on d.Id equals o.IdDonor
                                  select new { d.Id, o.IdDonation, d.FirstName, d.LastName, d.Adress, d.Tel, d.Email,
                                      o.SumDonation, o.SumAllDonat, o.StartDonation, o.SumMonthDonat };
    

    נסביר מעט:
    בשורה הראשונה אני יוצר משתנה ומגדיר לו שיריץ את השאילתה על ליסט בשם donorSearch (שזהו הליסט של תוצאות החיפוש)
    אח"כ אני מגדיר לו שהjoin הוא על ליסט בשם donatFilter כאשר ההשואה בין שני הליסטים תתבצע ע"פ הפרמטר id
    ואז אני נותן לו פקודת select שיצור עצם חדש ובתוכו אני בוחר איזה מאפיינים אני רוצה מהעצם של הליסט הראשון ואיזה אני רוצה משל האחרון, והוא מאחד ביניהם ויוצר לי ליסט חדש עם עצם מסוג חדש שכולל את כל המאפיינים הללו.
    אח"כ אני לוקח את הליסט החדש שנוצר לי ומציג אותו למשתמש!!

    פורסם במקור בפורום CODE613 ב10/08/2015 23:36 (+03:00)

    תגובה 1 תגובה אחרונה
    1

    בא תתחבר לדף היומי!
    • התחברות

    • אין לך חשבון עדיין? הרשמה

    • התחברו או הירשמו כדי לחפש.
    • פוסט ראשון
      פוסט אחרון
    0
    • דף הבית
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • חוקי הפורום