Language Integrated Query – LINQ, הוא כלי נהדר עבור מתכנתי #C ו VB.Net, הוא מאפשר שימוש בתחביר פשוט ומובן לצורך שליפת תוצאות.
Bad LINQ
var high = students.Count(i => i.MathGrade >= 60); var low = students.Where(i => i.MathGrade < 60).Count(); var sum = students.Sum(i => i.MathGrade);
הקוד שלעיל יבצע של בקשות נפרדות על ה Query – ברור שנוכל לבצע ולייעל את הקוד זה.
Good LINQ
נרצה להכניס את כל LINQ למשתנה בודד. הבעיה שלנו שלא ניתן לבצע את שלנו לא על Select ולא על Where.
הטריק הוא להשתמש ב GroupBy ללא שימוש ב GroupBy באמת. כלומר אנחנו לא רוצים שהתבצע כיווץ על פי property מסויים. הטריק נעשה באופן הבא:
var a = students.GroupBy(g => 1) .Select(g => new { High = g.Count(i => i.MathGrade >= 60), Low = g.Count(i => i.MathGrade < 60), Sum = g.Sum(i => i.MathGrade) });
לאחר מכן, ניתן לשלוף את המידע בקלילות:
var highCount = a.GetEnumerator().Current.High; var lowCount = a.GetEnumerator().Current.Low; var sum = a.GetEnumerator().Current.Sum;
כתיבת תגובה