Query and manipulate data and objects by using LINQ

You have a list of dates. You want to filter the dates to the current year and then select the highest date. Which query do you use?

DateTime result = dates.Where(d => d == DateTime.Now).OrderBy(d => d).First();
DateTime result = dates.Where(d => d.Year == DateTime.Now.Year).OrderByDescending(d => d).First();
DateTime result = dates.Where(d => d.Year == DateTime.Now.Year).OrderByDescending(d => d).Single();
DateTime result = dates.Where(d => d.Year == DateTime.Now.Year).OrderByDescending(d => d).FirstOrDefault();