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(); }