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);
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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));
            }
        }