private void RunSecondPrototype() { IEnumerable <Singer> singers = DemoCollections.GetSingers(); IEnumerable <Concert> concerts = DemoCollections.GetConcerts(); SingerGenderComparer comparer = new SingerGenderComparer(); IEnumerable <IGrouping <int, Concert> > concertGroups = concerts.GroupBy(c => c.SingerId, comparer); foreach (IGrouping <int, Concert> concertGroup in concertGroups) { Console.WriteLine("Concerts of {0} singers: ", comparer.IsPerformedByFemaleSinger(concertGroup.Key) ? "female" : "male"); foreach (Concert concert in concertGroup) { Console.WriteLine("Number of concerts: {0}, in the year of {1} by singer {2}.", concert.ConcertCount, concert.Year, concert.SingerId); } } IEnumerable <IGrouping <int, int> > concertGroupsFiltered = concerts.GroupBy(c => c.SingerId, c => c.ConcertCount, comparer); foreach (IGrouping <int, int> concertGroup in concertGroupsFiltered) { Console.WriteLine("Concerts of {0} singers: ", comparer.IsPerformedByFemaleSinger(concertGroup.Key) ? "female" : "male"); foreach (int concertCount in concertGroup) { Console.WriteLine("Number of concerts: {0}.", concertCount); } } }
private void RunFirstPrototype() { IEnumerable <Singer> singers = DemoCollections.GetSingers(); IEnumerable <Concert> concerts = DemoCollections.GetConcerts(); IEnumerable <IGrouping <int, Concert> > concertGroups = concerts.GroupBy(c => c.SingerId); foreach (IGrouping <int, Concert> concertGroup in concertGroups) { Console.WriteLine("Concerts for singer of ID {0}:", concertGroup.Key); foreach (Concert concert in concertGroup) { Console.WriteLine("Number of concerts: {0}, in the year of {1}.", concert.ConcertCount, concert.Year); } } IEnumerable <IGrouping <int, int> > concertGroupsFiltered = concerts.GroupBy(c => c.SingerId, c => c.ConcertCount); foreach (IGrouping <int, int> concertGroup in concertGroupsFiltered) { Console.WriteLine("Concerts for singer of ID {0}:", concertGroup.Key); foreach (int concertCount in concertGroup) { Console.WriteLine("Number of concerts: {0}.", concertCount); } } }
public void RunDemo() { IEnumerable <int> integers = Enumerable.Range(1, 100); int sum = integers.Sum(); Console.WriteLine(sum); IEnumerable <Concert> concerts = DemoCollections.GetConcerts(); int allConcerts = concerts.Sum(c => c.ConcertCount); Console.WriteLine(allConcerts); }
public void RunSelectManyOperatorExampleComplex() { IEnumerable <Singer> singers = DemoCollections.GetSingers(); IEnumerable <Concert> concerts = DemoCollections.GetConcerts(); var singerConcerts = singers.SelectMany(s => concerts.Where(c => c.SingerId == s.Id) .Select(c => new { Year = c.Year, ConcertCount = c.ConcertCount, Name = string.Concat(s.FirstName, " ", s.LastName) })); foreach (var item in singerConcerts) { Console.WriteLine(string.Concat(item.Name, ", ", item.Year, ", ", item.ConcertCount)); } }
public void RunDemo() { IEnumerable <Singer> singers = DemoCollections.GetSingers(); IEnumerable <Concert> concerts = DemoCollections.GetConcerts(); var singerConcerts = singers.Join(concerts, s => s.Id, c => c.SingerId, (s, c) => new { Id = s.Id, SingerName = string.Concat(s.FirstName, " ", s.LastName), ConcertCount = c.ConcertCount, Year = c.Year }); foreach (var res in singerConcerts) { Console.WriteLine(string.Concat(res.Id, ": ", res.SingerName, ", ", res.Year, ", ", res.ConcertCount)); } }