Esempio n. 1
0
        private static void Queries()
        {
            Vector <Email> emails = InitMails();

            var emailsVandaag = emails
                                .Where(mail => mail.Received.Date == DateTime.Now.Date)
                                .OrderByDescending(mail => mail.Received);

            var emailsVandaagQuerySyntax = from mail in emails
                                           where mail.Received.Date == DateTime.Now.Date
                                           orderby mail.Received descending
                                           select mail;

            var emailsDitJaar = emails
                                .Where(mail => mail.Received.Year == DateTime.Now.Year)
                                .OrderByDescending(mail => mail.Received);

            Console.WriteLine("Geef een zoekterm in: ");
            string zoekterm         = Console.ReadLine();
            var    emailsMetKeyword = emails.Where(mail => mail.Body.ToLowerInvariant().Contains(zoekterm.ToLowerInvariant())).OrderByDescending(mail => mail.Received);

            Console.WriteLine(string.Join(" ", emailsMetKeyword));

            DateTimeFormatInfo formatInfo = DateTimeFormatInfo.CurrentInfo;
            Calendar           calendar   = formatInfo.Calendar;

            // email.Where(...).Count() werkt ook, maar dit is een kortere notatie
            int emailsDezeWeek = emails.Count(mail => mail.Received.Year == DateTime.Now.Year &&
                                              calendar.GetWeekOfYear(mail.Received, CalendarWeekRule.FirstDay, DayOfWeek.Monday) == calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday));

            int emailsDezeWeekQuerySyntax = (from mail in emails
                                             where mail.Received.Year == DateTime.Now.Year &&
                                             calendar.GetWeekOfYear(mail.Received, CalendarWeekRule.FirstDay, DayOfWeek.Monday) == calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday)
                                             select mail).Count();

            // Where kan hier ook, maar dan krijg je potentiëel meerdere mails terug als ze op exact hetzelfde moment zijn toegekomen, daarom First (geeft enkel het eerste resultaat terug)
            Email recentsteEmail = emails.First(mail => mail.Received == emails.Max(mail => mail.Received));

            Email recentsteEmailQuerySyntax = (from mail in emails
                                               where mail.Received == (from m in emails select m.Received).Max()
                                               select mail).First();

            // gezien emailsVandaag de recentste mails eerst zet, kan je die query ook herbruiken
            Email recentsteMailAlternatief = emailsVandaag.First();
        }