Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            // 1st use of Linq
            var cheapBooks = books.Where(b => b.Price < 10);

            foreach (var book in cheapBooks)
            {
                Console.WriteLine("Bookprice < 10 only: " + book.Title + " Price:  " + book.Price);
            }

            // 2nd use of Linq
            books.OrderBy(b => b.Title);
            foreach (var book in books)
            {
                Console.WriteLine("Sorted by title: " + book.Title + " " + book.Price);
            }

            // Chain linqs and select string only
            var cheapBooksTitles = books
                                   .Where(b => b.Price < 10)
                                   .OrderBy(b => b.Title)
                                   .Select(b => b.Title); // Select string-only

            foreach (var book in cheapBooksTitles)
            {
                Console.WriteLine("String only : " + book);
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            // Searches collection for items with specific conditions
            var cheapBooks = books.Where(book => book.Price < 10);

            foreach (var book in cheapBooks)
            {
                Console.WriteLine(book.Title + " " + book.Price);
            }

            // Sorts items in collection
            var orderedBooks = books.OrderBy(b => b.Title);

            foreach (var book in orderedBooks)
            {
                Console.WriteLine(book.Title + " " + book.Price);
            }

            // Selects all items in collection and projects them by type fields
            var selectedBooks = books.Select(b => b.Title);

            foreach (var book in selectedBooks)
            {
                Console.WriteLine(book);
            }

            // C# common convention layout for multiple inline LINQ statements
            var booksLinq = books
                            .Where(book => book.Price < 10) // Searches collection for items with specific conditions
                            .OrderBy(b => b.Title)          // Sorts items in collection
                            .Select(b => b.Title);          // Selects all items in collection and projects them by type fields

            // OR LINQ Query Operators
            var booksLinqQuery =
                from b in books
                where b.Price < 10
                orderby b.Title
                select b.Title;

            // Another useful LINQ Extension Methods
            var singleBook = books.SingleOrDefault(b => b.Title == "ASP.NET MVC"); // returns single item or default value

            Console.WriteLine(singleBook != null ? singleBook.Title : "There is no such book in collection");

            var firstBook = books.FirstOrDefault(b => b.Title == "Entity Framework");

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

            var lastBook = books.LastOrDefault(b => b.Title == "Entity Framework");

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

            var skipBooks = books.Skip(2).Take(3);

            foreach (var skipBook in skipBooks)
            {
                Console.WriteLine(skipBook.Title);
            }

            Console.WriteLine("Books count: " + books.Count());
            Console.WriteLine("Books max price: " + books.Max(b => b.Price));
            Console.WriteLine("Books min price: " + books.Min(b => b.Price));
            Console.WriteLine("Sum of all books prices: " + books.Sum(b => b.Price));
            Console.WriteLine("Average of all books prices: " + books.Average(b => b.Price));
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            #region One
            //LINQ Query operators
            var expensiveBooks = from b in books
                                 where b.Price > 10
                                 orderby b.Title
                                 select b.Title;

            expensiveBooks.ToList().ForEach(bt => Console.WriteLine(bt));
            Console.WriteLine("**********************");

            //LINQ extension methods
            var cheapBooks = books.Where(b => b.Price <= 10)
                             .OrderByDescending(b => b.Title)
                             .Select(b => b.Title)
                             .ToList();

            cheapBooks.ForEach(bt => Console.WriteLine(bt));
            Console.WriteLine("**********************");

            var orderedBooks = books.OrderBy(b => b.Price).ToList();
            orderedBooks.ForEach(b => Console.WriteLine($"{b.Title} - {b.Price}"));
            #endregion

            Console.WriteLine();
            Console.WriteLine("**********************");
            Console.WriteLine("**********************");

            #region Two
            var book = books.SingleOrDefault(b => b.Title == "Title 3++");
            if (book != null)
            {
                Console.WriteLine(book.Title);
            }

            book = books.FirstOrDefault(b => b.Title.Contains("Title"));
            if (book != null)
            {
                Console.WriteLine(book.Title + " - " + book.Price);
            }

            book = books.LastOrDefault(b => b.Title.Contains("Title"));
            if (book != null)
            {
                Console.WriteLine(book.Title + " - " + book.Price);
            }

            var pagedBooks = books.Skip(1).Take(1).ToList();
            pagedBooks.ForEach(b => Console.WriteLine($"{b.Title} - {b.Price}"));

            #endregion

            Console.WriteLine();
            Console.WriteLine("**********************");
            Console.WriteLine("**********************");

            #region Three

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

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

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

            #endregion

            Console.ReadLine();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            var books = new BookRepository().GetBooks();

            var cheapBooks = new List <Book>();

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

            // ŞİMDİ AYNI FİLTRELEMEYİ LINQ İLE YAPALIM

            // LINQ Extension Methods

            var cheapBooks1 = books.Where(b => b.Price < 10);   // Lambda Expression ve where sorgusu

            // orderby kullanalım
            var cheapBooks2 = books.OrderBy(b => b.Title);

            // ucuca ekleyip, hem fiyata göre filtreleyip, hem Title a gore sıralayalım
            var cheapBooks3 = books.Where(b => b.Price < 10).OrderBy(b => b.Title);

            // ucuca ekleyip, hem fiyata göre filtreleyip, hem Title a gore sıralayalım. Select ekleyelim.
            // select projection veya transformation için kullanılıyormuş
            // sadece Title listesi oluştu yani string generic listesi
            var cheapBooks4 = books
                              .Where(b => b.Price < 10)
                              .OrderBy(b => b.Title)
                              .Select(b => b.Title);
            // (Yukarıdaki şekildeki gibi nokta, altsatırda devam etmeye, LINQ Extension Methods diyoruz.)


            // Single ile sadece tek birşey seçebiliriz. Fakat dikkat et, eğer o filtren bulunamazsa, app hata verir önlem de almamışsan
            var cheapBooks6 = books.Single(b => b.Title == "ASP.NET MVC");

            // O objectin olmaması riski de varsa, SingleOrDefault kullanırız. Alttaki örnekte default olarak null gelir bulunamazsa...
            var cheapBooks7 = books.SingleOrDefault(b => b.Title == "ASP.NET MVC++");  // ++ eklediigimiz için bulunamıycak.


            // First, aynısından sadece ilkini bulur - bulamazsa hata verir
            var cheapBooks8 = books.First(b => b.Title == "C# Advanced Topics");

            // FirstOrDefault, ilki, ama hiç bulamazsa default olarak bu örnekte null
            var cheapBooks9 = books.FirstOrDefault(b => b.Title == "C# Advanced Topics");

            // Last, aynısından sadece sonuncuyu bulur - bulamazsa hata verir
            var cheapBooks10 = books.Last(b => b.Title == "C# Advanced Topics");

            // LastOrDefault, sonuncusu, ama hiç bulamazsa default olarak bu örnekte null
            var cheapBooks11 = books.LastOrDefault(b => b.Title == "C# Advanced Topics");

            // Skip() ve Take() - ilk 2 tanesini atla, sonra 3 tanesini al
            var cheapBooks12 = books.Skip(2).Take(3);

            // SQL deki gibi Aggregate Func da var. mesela Count()
            var bookCount = books.Count();

            // SQL deki Max() - tabi price a göre max olmasını biz söylüycez - float type a return ediyor, çünkü class Books ta, Price type float
            var highestPrice = books.Max(b => b.Price);   // type: float

            // Min()
            var minPrice = books.Min(b => b.Price);  // type: float

            // Sum() - tüm kitapların fiyatı toplamı
            var totalPrice = books.Sum(b => b.Price);  // type: float

            // Average() - tüm kitapların ortalama fiyatı
            var avgPrice = books.Average(b => b.Price);  // type: float

            foreach (var book in cheapBooks)
            {
                Console.WriteLine(book.Title + " " + book.Price);
            }

            foreach (var book in cheapBooks4)
            {
                Console.WriteLine(book);
            }

            foreach (var book in cheapBooks12)
            {
                Console.WriteLine(book.Title + " " + book.Price);
            }



            // LINQ Query Methods
            var cheapBooks5 = from b in books
                              where b.Price < 10
                              orderby b.Title
                              select b.Title;
        }
Ejemplo n.º 5
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");
        }