loading
0%
Tarihçe, .Net Framework vs .Net Core vs .Net5
.NET 5 Kurulumu
Visual Studio Code kurulumu
Http Protokolü
Restful Servisler
Restful vs Soap
JSON (JavaScript Object Notation)
Örnek Web Api Yaratmak
Startup ve Program Sınıfları
Ortam dosyaları
Controller Sınıfı
Route Kavramı
Action Methodlar
Okunabilir API tasarımı
Swagger Nedir? Nasıl Kullanılır?
Postman Nedir? Nasıl Kullanılır?
Api Debug Nasıl Yapılır?
Get ve GetById endpoint'lerinin yazılması
Put ve Post endpoint'lerinin yazılması
Delete endpoint'inin yazılması
İlişkisel ve NoSql Veritabanları
Table,Primary Key, Foreign Key Kavramları
Tablo İlişkileri
Temel SQL
ORM Nedir? ORM Araçları Nelerdir? Entity Framework Core'a Giriş
Örnek Projeye EF Core Dahil Etmek
DB Context kullanarak CRUD işlemler
Auto Increment ID kolonunun eklenmesi
Linq ile Crud İşlemler
Entity Kavramı
ViewModel ve Dto Kavramı
Ödev - Model Kullanımı
Ödev Çözümü - Model Kullanımı
AutoMapper
Modellerin Doğrulanması ve FluentValidation Kütüphanesi
Model Validasyonu - Ödev
Model Validasyonu - Ödev Çözümü
Middleware Kavramı
Custom Exception Middleware Yaratılmak
Dependency Nedir ?
Dependency Injection (DI) Kavramı
DI Container Kavramı
.NET Core DI Container (Services)
Projeye DI Container Kullanarak Logger Servis Eklemek
Pratik - Projeye Genre Controller ve Servislerin Eklenmesi
Ödev - Projeye Author Controller ve Servislerin Eklenmesi
Test Kavramı ve Çeşitleri
TDD (Test Driven Development) Nedir ?
Örnek Test Yazımı
Pratik - Command ve Validator Sınıflarının Testlerinin Yazılması
Ödev - Projenin eksik testlerinin tamamlanması
Token Bazlı Kimlik Doğrulama ve Access Token Kullanımı
Refresh Token Kullanımı
Proje Ödevi - Movie Store Uygulaması
Proje Ödevi 2 - Serbest Proje Seçimi
Coderbyte Challenge

Linq ile Crud İşlemler

LINQ (Language Integrated Query)


LINQ .Net Framework 3.5 ve Visual Studio 2008 ile hayatımıza giren farklı data source yani veri kaynaklarını sorgulamamıza yarayan bir dildir. LINQ Visual Basic ve C# ile birlikte kullanılabilir.


Linq IQuerayable sınıflar ve IQuerayable'dan türeyen sınıflarla birlikte kullanılabilir. EF Core ile yarattığımız context'in elemanları yani tabloların koddaki karşıklıkları DBSet tipindedir. DBSet de IQuerayable sınıfından türeyen bir sınıftır. Dolayısıyla LINQ kullanılarak DBSet'ler üzerinde sorgulama yapılabilir.


Günlük hayatımızda Entity Framework Core ile birlikte LINQ'yu çok kullanıyoruz. Ve her gün nerdeyse kullandığımız bazı temel Linq metotları vardır.

Başlıca önemli LINQ metotları şu şekilde:

  • First()
  • Find()
  • FirstOrDefault()
  • Single()
  • SingleOrDefault()
  • ToList()
  • Count()
  • Min()
  • Max()
  • Last()
  • LastOrDefault()
  • Average()

Şimdi LINQ metotlarının bazılarının kullanımlarına tek tek örnekler ile birlikte bakalım.


  • Find()

DBSet sınıfı ile kullanılabilen bir metottur. İlgili DbSet üzerinden Primary Key olarak tanımlanan alana göre arama yapmak için kullanılır.


using (var ctx = new BookStoreDbContext())
{
    var book = ctx.Books.Find(id);
}


  • First/FirstOrDefault()


First ve FirstOrDefault birden fazla verinin olabileceği sorgulamaların sonunda listedeki ilk elemanı seçmek için kullanılır.


using (var ctx = new BookStoreDbContext())
{
    var books = ctx.Books
                    .Where(s => s.Title == "Herland")
                    .FirstOrDefault<Book>();
}

Önemli: First() ve FirstOrDefault() arasındaki temel fark; eğer listede veri bulunamazsa First() hata fırlatırken, FirstOrDefault() geriye null döndürür. Bu nedenle FirstOrDefault() ile veriyi çekip daha sonradan verinin null olup olmadığını kontrol etmek daha doğru bir yaklaşım olur.


  • SingleOrDefault()


Sorgulama sonunda kalan tek veriyi geri döndürür. Eğer listede birden fazla eleman varsa hata döndürür. Listede hiç eleman yoksa geriye null döndürür.


using (var ctx = new BookStoreDbContext())
{
    var books = ctx.Books
                    .Where(s => s.Title == "Herland")
                    .SingleOrDefault<Book>();
}


  • ToList()


Sorgulama sonucunu geriye koleksiyon olarak döndürmek için kullanılır.


using (var ctx = new BookStoreDbContext())
{
    var bookList = ctx.Books.Where(s => s.GenreId == 2).ToList();
}


  • OrderBy/OrderByDescending()


OrderBy() bir listeyi sıralamak için kullanılır. OrderBy() varsayılan olarak Ascending sıralama sunar. Tersi sıralamak için OrderByDescending() kullanılmalıdır.


using (var ctx = new BookStoreDbContext())
{
    var books = ctx.Books.OrderBy(s => s.Title).ToList();

    // or descending order
    var  descBooks = ctx.Books.OrderByDescending(s => s.Title).ToList();
}
  • GroupBy()


Belirli bir alana göre verileri gruplamak için kullanılır.


using (var ctx = new BookStoreDbContext())
{
    var books = ctx.Books.GroupBy(s => s.GenreId);

    foreach (var groupItem in books)
    {
        Console.WriteLine(groupItem.Key);

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

    }
}


  • Parameterized Query


LINQ içerisinde parametreleri kullanabiliriz.


using (var ctx = new BookStoreDbContext())
{
    string title = "Herland";
    var book = ctx.Books
                .Where(s => s.Title == name)
                .FirstOrDefault<Book>();
}


  • Anonymous Object Result


LINQ her zaman geriye entity objesi dönmek zorunda değildir. Query sonucunu kendi yarattığınız bir obje formatında döndürebilirsiniz.


using (var ctx = new BookStoreDbContext())
{
    var anonymousObjResult = ctx.Books
                                .Where(b => b.GenreId == 2)
                                .Select(b => new {
                                            Id = b.Id,
                                            BookName = b.Title });

    foreach (var obj in anonymousObjResult)
    {
        Console.Write(obj.Name);
    }
}



Okuma Önerisi: LINQ ile ilgili daha fazla bilgi edinmek için tıklayınız

0%
+ .NET 5 Giriş
Tarihçe, .Net Framework vs .Net Core vs .Net5
+ Kurulumlar
.NET 5 Kurulumu
Visual Studio Code kurulumu
+ Http Protokol
Http Protokolü
Restful Servisler
Restful vs Soap
JSON (JavaScript Object Notation)
+ Örnek Web Api Yaratmak
Örnek Web Api Yaratmak
+ Proje Dosyalarını Tanıma
Startup ve Program Sınıfları
Ortam dosyaları
+ Controllers, Route ve Action Methodlar
Controller Sınıfı
Route Kavramı
Action Methodlar
Okunabilir API tasarımı
+ Swagger ve Postman kullanımı
Swagger Nedir? Nasıl Kullanılır?
Postman Nedir? Nasıl Kullanılır?
Api Debug Nasıl Yapılır?
+ BookStore Projesi Yaratmak
Get ve GetById endpoint'lerinin yazılması
Put ve Post endpoint'lerinin yazılması
Delete endpoint'inin yazılması
+ Veritabanı Yönetim Sistemleri
İlişkisel ve NoSql Veritabanları
Table,Primary Key, Foreign Key Kavramları
Tablo İlişkileri
- Orm ve Entity Framework Core
Temel SQL
ORM Nedir? ORM Araçları Nelerdir? Entity Framework Core'a Giriş
Örnek Projeye EF Core Dahil Etmek
DB Context kullanarak CRUD işlemler
Auto Increment ID kolonunun eklenmesi
Linq ile Crud İşlemler
+ Entity, Model ve Mapper Kullanımı
Entity Kavramı
ViewModel ve Dto Kavramı
Ödev - Model Kullanımı
Ödev Çözümü - Model Kullanımı
AutoMapper
+ Fluent Validation Kullanarak Modellerin Doğrulanması
Modellerin Doğrulanması ve FluentValidation Kütüphanesi
Model Validasyonu - Ödev
Model Validasyonu - Ödev Çözümü
+ Middleware Kavramı
Middleware Kavramı
Custom Exception Middleware Yaratılmak
+ Dependency Injection
Dependency Nedir ?
Dependency Injection (DI) Kavramı
DI Container Kavramı
.NET Core DI Container (Services)
Projeye DI Container Kullanarak Logger Servis Eklemek
+ Projeye Genre Controller ve Servislerin Eklenmesi
Pratik - Projeye Genre Controller ve Servislerin Eklenmesi
+ Ödev - Projeye Author Controller ve Servislerin Eklenmesi
Ödev - Projeye Author Controller ve Servislerin Eklenmesi
+ TDD (Test Driven Development)
Test Kavramı ve Çeşitleri
TDD (Test Driven Development) Nedir ?
Örnek Test Yazımı
Pratik - Command ve Validator Sınıflarının Testlerinin Yazılması
+ Ödev - Projenin eksik testlerinin tamamlanması
Ödev - Projenin eksik testlerinin tamamlanması
+ Kimlik Doğrulama ve Yetkilendirme Protokolleri
Token Bazlı Kimlik Doğrulama ve Access Token Kullanımı
Refresh Token Kullanımı
+ Proje Ödevi 1- Movie Store Uygulaması
Proje Ödevi - Movie Store Uygulaması
+ Proje Ödevi 2 - Serbest Proje Seçimi
Proje Ödevi 2 - Serbest Proje Seçimi
+ Coderbyte Challenge
Coderbyte Challenge
chat

Comments

rocket

0

woman-dancing

0

thinking-face

0

exploding-head

0

Max character number is 255.

You need to log in to be able to comment!