Cohorts
  • Discover
  • About Us
  • Blog
  • Patika.dev
  • Web3

.Net Core

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

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

Quiz

Answer the questions to check your understanding.

This lesson includes a short quiz.

Previous
Next

Lesson discussion

Swap insights and ask questions about “.Net Core”.

Enroll to participate
Start the course to unlock the discussion. Enrolling helps us keep conversations relevant to learners.
Cohorts
WebsiteDiscoverBlogPatika.devRise In
CoursesCircleRustSoliditySolanaWeb3 FundamentalsBlockchain Basics
CompanyAbout UsTerms of UsePrivacy PolicyGDPR NoticeCookies
Don't miss any update!

Disclaimer: The information, programs, and events provided on https://cohorts.patika.dev is strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice, nor do we make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://cohorts.patika.dev disclaims any responsibility for financial decisions made by users based on the information provided here.

© 2026 Cohorts, All rights reserved