static void Main()
        {
            var books = new BookRepository().GetBooks();

            //LINQ Query Operators
            var booksArray = books as Book[] ?? books.ToArray();
            var cheaperBooks =
                from b in booksArray
                where b.Price < 10
                orderby b.Title
                select b.Title;

            //LINQ Extension Methods (same as above)
            var cheapBooks = booksArray
                                .Where(b => b.Price < 10)
                                .OrderBy(b => b.Title)
                                .Select(b=>b.Title);

            foreach (var b in cheapBooks)
                Console.WriteLine(b);
                //Console.WriteLine(book.Title + " " + book.Price);

            var book = booksArray.Single(b => b.Title == "ASP.Net MVC");

            var lastBook = booksArray.LastOrDefault(b => b.Price > 9);

            var pagedBooks = booksArray.Skip(2).Take(3);

            foreach (var pagedBook in pagedBooks)
            {
                Console.WriteLine(pagedBook.Title);
            }
            Console.WriteLine(booksArray.Sum(b=>b.Price));
        }
        static void Main(string[] args)
        {
            //Language Integrated Query

            var books = new BookRepository().GetBooks();

            //var cheaperBooks = new List<Book>();
            //foreach (var book in books)
            //{
            //    if (book.Price < 10)
            //        cheaperBooks.Add(book);
            //}

            //Linq Query Operators - bu kısım aslında arka planda Linq Extension Methods translate edilir
            var cheaperBooks =
                from b in books
                where b.Price < 10
                orderby b.Title
                select b.Title;//select b;

            //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);
            //Console.WriteLine(book.Title + " " + book.Price);

            Console.ReadLine();

            //var bookItem = books.Single(b => b.Title == "ASP.NET MVC++"); //null gelirse exception fırlatır
            //var bookItem = books.SingleOrDefault(b => b.Title == "ASP.NET MVC++");//null gelme ihtimali varsa kullanılır
            //var bookItem = books.First(b => b.Title == "C# Advanced Topics");
            //var bookItem = books.FirstOrDefault(b => b.Title == "C# Advanced Topics");
            var bookItem = books.LastOrDefault(b => b.Title == "C# Advanced Topics");

            Console.WriteLine(bookItem.Title + " " + bookItem.Price);

            Console.ReadLine();

            //Good for paging
            var pagedBooks = books.Skip(2).Take(3);
            foreach (var book in pagedBooks)
            {
                Console.WriteLine(book.Title + " " + book.Price);
            }

            Console.ReadLine();

            var count = books.Count();
            Console.WriteLine(count);

            Console.ReadLine();

            var maxPrice = books.Max(b => b.Price);
            Console.WriteLine(maxPrice);

            var minPrice = books.Min(b => b.Price);
            Console.WriteLine(minPrice);

            var totalPrice = books.Sum(b => b.Price);
            Console.WriteLine(totalPrice);

            var averagePrice = books.Average(b => b.Price);
            Console.WriteLine(averagePrice);

            Console.ReadLine();
        }
Exemple #3
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            Console.WriteLine("-------------- all books ");
            foreach (var book in books)
            {
                Console.WriteLine($"{book.Title}, {book.Price}");
            }


            // LINQ Extension Methods

            var cheapBooks = books
                             .Where(b => b.Price < 20)
                             .OrderBy(b => b.Title);

            var cheapBooksStrings = books
                                    .Where(b => b.Price < 20)
                                    .OrderBy(b => b.Title)
                                    .Select(b => b.Title);

            Console.WriteLine("-------------- get books (objects) with LINQ Extension Methods");
            foreach (var book in cheapBooks)
            {
                Console.WriteLine($"{book.Title}, {book.Price}");
            }
            Console.WriteLine("-------------- get titles with LINQ Extension Methods");
            foreach (var book in cheapBooksStrings)
            {
                Console.WriteLine(book);
            }



            // LINQ Query Operators
            var cheapBooksWithQuery =
                from b in books
                where b.Price < 20
                orderby b.Title
                select b;

            Console.WriteLine("-------------- get books (objects) with LINQ Query Operators");
            foreach (var book in cheapBooksWithQuery)
            {
                Console.WriteLine($"{book.Title}, {book.Price}");
            }

            var theBook = new Book {
                Title = "I dont exist", Price = 0
            };

            Console.WriteLine("-------------- Single");
            theBook = books.SingleOrDefault(b => b.Title == "Zoo");
            Console.WriteLine($"{theBook.Title}, {theBook.Price}");

            Console.WriteLine("-------------- SingleOrDefault");
            theBook = books.SingleOrDefault(b => b.Title == "zoo");
            Console.WriteLine(theBook == null);


            Console.WriteLine("-------------- First");
            theBook = books.FirstOrDefault(b => b.Price == 6.99m);
            Console.WriteLine($"{theBook.Title}, {theBook.Price}");

            var orderedBooks = books.OrderBy(b => b.Title);

            Console.WriteLine("-------------- First of ordered");
            theBook = orderedBooks.FirstOrDefault(b => b.Price == 6.99m);
            Console.WriteLine($"{theBook.Title}, {theBook.Price}");


            Console.WriteLine("-------------- FirstOrDefault");
            theBook = books.FirstOrDefault(b => b.Price == 123.99m);
            Console.WriteLine(theBook == null);


            Console.WriteLine("-------------- Skip, Take");
            var pagedBooks = books.Skip(3).Take(4);

            foreach (var book in pagedBooks)
            {
                Console.WriteLine($"{book.Title}, {book.Price}");
            }

            Console.WriteLine("-------------- Count");
            Console.WriteLine($"there are {books.Count} books");

            Console.WriteLine("-------------- Sum");
            Console.WriteLine($"you need {books.Sum(b => b.Price)} dollars to buy all the books");
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            Console.WriteLine("number of books:");
            var count = books.Count();

            Console.WriteLine(count);

            Console.WriteLine("name of books:");
            foreach (var b in books)
            {
                Console.WriteLine("Title: " + b);
            }

            var cheapBooks = books
                             .Where(b => b.Price < 10)
                             .OrderBy(b => b.Title)
                             .Select(b => b.Title);

            Console.WriteLine("Cheapbooks:");
            foreach (var b in cheapBooks)
            {
                Console.WriteLine("Title: " + b);
            }

            Console.WriteLine("favourite book:");
            var book = books.Single(b => b.Title == "Solid Mechanics");

            Console.WriteLine(book.Title);

            Console.WriteLine("first book in collection:");
            var firstBook = books.First();

            Console.WriteLine("Title: " + firstBook.Title + ". Price: " + firstBook.Price);

            Console.WriteLine("last book in collection:");
            var lastBook = books.Last();

            Console.WriteLine("Title: " + lastBook.Title + ". Price: " + lastBook.Price);

            Console.WriteLine("books after skipping first three:");
            var remainingBooks = books.Skip(2).Take(2);

            foreach (var b in remainingBooks)
            {
                Console.WriteLine(b.Title);
            }

            Console.WriteLine("max price: ");
            var maxPrice = books.Max(b => b.Price);

            Console.WriteLine(maxPrice);

            Console.WriteLine("min price: ");
            var minPrice = books.Min(b => b.Price);

            Console.WriteLine(minPrice);

            Console.WriteLine("total price: ");
            var totalPrice = books.Sum(b => b.Price);

            Console.WriteLine(totalPrice);
        }
Exemple #5
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            // 1. Display the list of books that are cheaper than 10$

            // Without LINQ
            //var cheapBooks = new List<Book>();

            //foreach(var book in books)
            //{
            //    if(book.Price < 10)
            //    {
            //        cheapBooks.Add(book);
            //    }
            //}

            // With LINQ
            var cheapBooks = books
                             .Where(b => b.Price < 10) // We use Where to filter collections
                             .OrderBy(b => b.Title)    // We use OrderBy and OrderByDescending to sort collections
                             .Select(b => b);          // We use Select for custom projections or transformations

            foreach (var cheapBook in cheapBooks)
            {
                Console.WriteLine($"{cheapBook.Title}: {cheapBook.Price}");
            }

            // 2. Display only one book with specific title
            var aspnetBook = books.Single(b => b.Title == "ASP.NET MVC"); // We use Single / SingleOrDefault to take only one element from the collection

            Console.WriteLine($"Title of book is {aspnetBook.Title} with price of {aspnetBook.Price}$");

            // 3. Give me the first book which title is "C# Advanced Topics"
            var firstInstanceOfCSharpAdvancedTopics = books.First(b => b.Title == "C# Advanced Topics"); // We use First / FirstOrDefault to take the first element of a collection returned that satisfied a specific predicate

            Console.WriteLine($"Title of book is {firstInstanceOfCSharpAdvancedTopics.Title} with price of {firstInstanceOfCSharpAdvancedTopics.Price}$");

            // 4. Skip the first two elements and take the next 3
            var pagedBooks = books
                             .Skip(2)
                             .Take(3);    // We use Skip and Take mainly for paging data

            foreach (var pagedBook in pagedBooks)
            {
                Console.WriteLine($"{pagedBook.Title}: {pagedBook.Price}");
            }

            // 5. Count the number of elements in a collection
            var noOfBooks = books.Count();

            Console.WriteLine($"Total number of books in collection: {noOfBooks}");

            // 6. Return the book with the maximum price
            var maxPriceBook = books.Max(b => b.Price);

            Console.WriteLine($"Maximum price of book is {maxPriceBook}$");

            // 7. Return total sum of prices of books in the collection
            var totalSumOfBookPrices = books.Sum(b => b.Price);

            Console.WriteLine($"Total sum of prices of books is: {totalSumOfBookPrices}$");

            // 8. Group books by title
            var groups = books
                         .GroupBy(b => b.Title)
                         .Select(g => new
            {
                Title = g.Key,
                Books = g
            });

            foreach (var group in groups)
            {
                Console.WriteLine($"Title: {group.Title}");

                foreach (var book in group.Books)
                {
                    Console.WriteLine($"\t Book Price: {book.Price}");
                }
            }

            Console.ReadLine();
        }