116. group by query syntax

בהמשך לטיפ היומי הקודם,

קיימת גם אפשרות לשימוש בgroup by באמצעות query syntax של LINQ.

1
2
3
IEnumerable<IGrouping<int, Person>> peopleByAge =
from person in people
group person by person.Age;

הsyntax שקול לכתיבה:

1
2
IEnumerable<IGrouping<int, Person>> peopleByAge =
people.GroupBy(person => person.Age);

שזה ממש אחלה..

שימו לב שאין שום select. במידה ונרצה להמשיך ולעשות דברים יותר מסובכים, נצטרך להשתמש במילת הקסם into (טיפ מספר 98):

1
2
3
4
5
IEnumerable<IGrouping<int, Person>> rareAgesGroups =
from person in people
group person by person.Age into ageGroup
where ageGroup.Count() <= 10
select ageGroup;

זה מוצא לנו את כל האנשים מקובצים לפי גילאים, כאשר בכל קבוצת גיל יש לכל היותר 10 אנשים..

החיסרון, כמובן, בכתיבה זו, הוא שאין ביכולתנו לציין את הIEqualityComparer שאיתו אנחנו רוצים להשוות את הגילאים.

המשך יום מקובץ טוב

שתף