using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
var books = new List<Book>
new Book {Title = "C# in Depth", ISBN = "161729134X", Authors = new List<string> {"John Skeet"}, PublishDate=new DateTime(2013, 4, 22)},
new Book {Title = "Secrets of the JavaScript Ninja", ISBN = "193398869X", Authors = new List<string> {"JJohn Resig", "Bear Bibeault "}, PublishDate=new DateTime(2014, 5, 17)},
new Book {Title = "C# 6.0 in a Nutshell: The Definitive Reference", ISBN = "1491927062", Authors = new List<string> {"Joseph Albahari", "Ben Albahari"}, PublishDate=new DateTime(2015, 11, 26)}
var query = from b in books where b.Title.Contains("C#") select b;
Console.WriteLine(string.Format("All c# books:"));
query.ToList().ForEach(b => Console.WriteLine(b));
Console.WriteLine(string.Format("Books printed after 5/1/2014:"));
var query2 = books.Where(book => book.PublishDate > new DateTime(2014, 5, 1));
query2.ToList().ForEach(b => Console.WriteLine(b));
Console.WriteLine(string.Format("Books with more than 1 author:"));
var query3 = books.Where(book => book.Authors.Count() > 1);
query3.ToList().ForEach(b => Console.WriteLine(b));
public string Title {get; set;}
public string ISBN {get; set;}
public List<string> Authors {get; set;}
public DateTime PublishDate {get; set;}
public override string ToString()
var flattenedAuthors = string.Join(",", Authors);
var formatedPublishDate = PublishDate.ToString("MM/dd/yyyy");
return $"{Title} \n {ISBN} \n {flattenedAuthors} \n {formatedPublishDate}";