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); } }
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)); }
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(); }
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; }
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"); }