//Definition of LINQ //Stands for Language Integrated Query //Capability to query objects //Usage //You can query objects in memory (LINQ to objects), Databases (LINQ to Entities), XML (LINQ to XML), ADO.NET Data Sets (LINQ to Data Sets) static void Main(string[] args) { var books = new BookRepository().GetBooks(); //LINQ Query Operators var cheaperBooks = from b in books where b.Price < 10 orderby b.Title select b.Title; //LINQ Extension Methods books.Where(x => x.Price < 10).ToList().ForEach(y => Console.WriteLine(y.Title)); }
static void Main(string[] args) { var books = new BookRepository().GetBooks(); /* * This can be done in one line using LINQ: * var cheapBooks = new List<Book>(); * * foreach(var book in books) * { * if(book.Price < 10) * { * cheapBooks.Add(book); * } * } */ // LINQ Extension methods var cheapBooks = books .Where(b => b.Price < 10) .OrderBy(b => b.Price) .Select(b => b.Title); // LINQ Query operators var cheaperBooks = from b in books where b.Price < 10 orderby b.Title select b.Title; foreach (var book in cheapBooks) { //Console.WriteLine(book.Title + " " + book.Price); Console.WriteLine(book); } Console.WriteLine(); foreach (var book in cheaperBooks) { //Console.WriteLine(book.Title + " " + book.Price); Console.WriteLine(book); } Console.WriteLine(); var book1 = books.SingleOrDefault(b => b.Title == "ASP.NET MVC+"); Console.WriteLine(book1); var book2 = books.FirstOrDefault(b => b.Title == "C# Advanced Topics"); Console.WriteLine(book2.Title + " " + book2.Price); var book3 = books.LastOrDefault(b => b.Title == "C# Advanced Topics"); Console.WriteLine(book3.Title + " " + book3.Price); Console.WriteLine(); var books4 = books.Skip(2).Take(3); foreach (var book in books4) { Console.WriteLine(book.Title); } Console.WriteLine(); var count = books.Count(); Console.WriteLine(count); Console.WriteLine(); var maxPrice = books.Max(b => b.Price); Console.WriteLine(maxPrice); Console.WriteLine(); var minPrice = books.Min(b => b.Price); Console.WriteLine(minPrice); Console.WriteLine(); var totalPrice = books.Sum(b => b.Price); Console.WriteLine(totalPrice); }
static void Main(string[] args) { var books = new BookRepository().GetBooks(); // LINQ query operators // always start with from and end with select var cheapBooks = from b in books where b.Price < 10 orderby b.Title select b.Title; foreach (var book in cheapBooks) { Console.WriteLine(book); } var singleBook = books.SingleOrDefault(b => b.Title == "Book 2"); // if there is no book2 it will return the default which is null Console.WriteLine("Single book: " + singleBook.Title); var firstBook = books.FirstOrDefault(b => b.Title == "Book 3"); Console.WriteLine("First book that has title Book 3: " + firstBook.Price); // default is null var lastBook = books.LastOrDefault(b => b.Title == "Book 3"); Console.WriteLine("Last book that has title Book 3: " + lastBook.Price); var pages = books.Skip(2).Take(3); // skips the first 2 books and takes the next 3 foreach (var pagedBook in pages) { Console.WriteLine(pagedBook.Title); } var count = books.Count(); Console.WriteLine("Count: " + count); var maxPrice = books.Max(b => b.Price); // returns the book with the max price Console.WriteLine("Max: " + maxPrice); var sumPrice = books.Sum(b => b.Price); Console.WriteLine("Total: " + sumPrice); // LINQ Extension methods /* var cheapBooks = books.Where(b => b.Price < 10).OrderBy(b => b.Title).Select(b => b.Title); * * foreach(var book in cheapBooks) * Console.WriteLine(book);*/ // after using select for the title, book is now a string because it returns an // IEnumerable of just the title of the books. This can no longer be used /* foreach(var book in cheapBooks) * Console.WriteLine(book.Title + " " + book.Price);*/ // without LINQ /* var cheapBooks = new List<Book>(); * foreach(var book in books) * { * if (book.Price < 10) * { * cheapBooks.Add(book); * Console.WriteLine(book.Title + " " + book.Price); * } * }*/ }