SELECT ve Projeksiyon
Verileri yeni biçimlere dönüştürün.
SELECT ve Projeksiyon, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Yansıtmanın Anlamı
Select, bir dizinin her öğesini yeni bir biçime dönüştürür. Buna yansıtma denir.
Bir öğeyi sonuca eşleyen bir lambda alır ve bu sonuçlardan oluşan bir dizi döndürür; kaynak değişmeden kalır.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4 };
var squares = nums.Select(n => n * n);
Console.WriteLine(string.Join(", ", squares));Türü Değiştirme
Yansıtma, öğe türünü tamamen değiştirebilir. int türünü string türüne eşlemek, bir IEnumerable<string> üretir.
Çıktı türü lambda ifadesinin dönüş türünden çıkarılır; derleyici bunu sizin için izler.
using System;
using System.Linq;
int[] nums = { 10, 20, 30 };
var labels = nums.Select(n => $"Item #{n}");
foreach (var l in labels) Console.WriteLine(l);Özellikleri Yansıtma
Sık kullanılan bir yaklaşım, nesnelerden tek bir özelliği almaktır. Select(p => p.Name), nesnelerden oluşan bir listeyi adlardan oluşan bir listeye dönüştürür.
Bu, sonraki işlemlerden veya görüntülemeden önce verileri yalnızca ihtiyacınız olan bilgilerle sınırlar.
using System;
using System.Linq;
using System.Collections.Generic;
record User(string Name, int Age);
var users = new List<User> { new("Ana", 30), new("Bo", 25) };
var names = users.Select(u => u.Name);
Console.WriteLine(string.Join(", ", names));Anonim Tür Sonuçları
Birkaç alanı birlikte tutmak için anonim bir türe yansıtma yapabilirsiniz. Lambda içinde new { ... } kullanın.
Derleyici, salt okunur özelliklere sahip bir sınıfı anında oluşturur; bu, ara sonuçları biçimlendirmek için idealdir.
using System;
using System.Linq;
using System.Collections.Generic;
record User(string Name, int Age);
var users = new List<User> { new("Ana", 30), new("Bo", 25) };
var shaped = users.Select(u => new { u.Name, IsAdult = u.Age >= 18 });
foreach (var s in shaped) Console.WriteLine($"{s.Name}:{s.IsAdult}");Dizinle Select
Where gibi Select işlecinin de sıfır tabanlı dizini sunan bir aşırı yüklemesi vardır. Lambda, (element, index) değerlerini alır.
Bu, öğeleri numaralandırmak veya her değeri konumuyla eşleştirmek için idealdir.
using System;
using System.Linq;
string[] tasks = { "Wake", "Eat", "Code" };
var numbered = tasks.Select((t, i) => $"{i + 1}. {t}");
foreach (var n in numbered) Console.WriteLine(n);Sorgu Sözdiziminde Select
Sorgu sözdiziminde select yan tümcesi yansıtma işlemini gerçekleştirir. Öğenin kendisini veya ona dayalı herhangi bir ifadeyi seçebilirsiniz.
Filtreleme ve biçimlendirmeyi tek bir okunaklı sorguda yapmak için bunu where ile birleştirin.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4, 5 };
var result = from n in nums
where n % 2 == 1
select n * 10;
Console.WriteLine(string.Join(", ", result));SelectMany Düzleştirir
Her öğe bir koleksiyona eşlendiğinde Select, size dizilerden oluşan bir dizi verir. SelectMany ise bunları tek bir dizide düzleştirir.
Bu, iç sonuçları birleştiren iç içe bir döngünün LINQ karşılığıdır.
using System;
using System.Linq;
using System.Collections.Generic;
var groups = new List<int[]> { new[] {1, 2}, new[] {3, 4} };
var flat = groups.SelectMany(g => g);
Console.WriteLine(string.Join(", ", flat));Yansıtma da Ertelenir
Select de ertelenmiş yürütme modelini kullanır. Eşleme lambdası yalnızca dizi üzerinde dolaşıldığında çalışır.
Bu nedenle bir yansıtma oluşturmak ucuzdur; asıl iş, sonuç üzerinde yinelendiğinizde veya sonucu somutlaştırdığınızda gerçekleşir.
using System;
using System.Linq;
int runs = 0;
int[] nums = { 1, 2, 3 };
var q = nums.Select(n => { runs++; return n; });
Console.WriteLine($"Before: {runs}");
foreach (var _ in q) { }
Console.WriteLine($"After: {runs}");Önce Filtrele, Sonra Yansıt
Açıklık ve verimlilik için sıra önemlidir: önce Where ile filtreleyin, ardından Select ile yansıtma yapın; böylece yalnızca koruduğunuz öğeleri dönüştürürsünüz.
Bu işlem hattı yukarıdan aşağıya okunur ve gereksiz yansıtma çalışmasını önler.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4, 5, 6 };
var result = nums.Where(n => n % 2 == 0)
.Select(n => n * n);
Console.WriteLine(string.Join(", ", result));Yeni Bir Kayıt Türüne Yansıtma
Anonim türler yerine adlandırılmış bir türe veya record türüne yansıtma yapabilirsiniz. Anonim türler bilinen bir adla döndürülemediğinden, sonuçlar yöntem sınırlarını aştığında bu yaklaşım kullanışlıdır.
Daha zengin alan nesnelerinden veri aktarım nesneleri bu şekilde oluşturulur.
using System;
using System.Linq;
using System.Collections.Generic;
record User(string Name, int Age);
record Summary(string Name);
var users = new List<User> { new("Ana", 30) };
var dtos = users.Select(u => new Summary(u.Name));
foreach (var d in dtos) Console.WriteLine(d.Name);Select Sırayı ve Sayıyı Korur
Where'ün aksine Select hiçbir öğe eklemez veya çıkarmaz; bire bir eşleme yapar. Çıktı, girdidekiyle aynı öğe sayısına ve sıraya sahip olur.
Daha az öğeye ihtiyacınız varsa filtreleyin; her öğeden daha fazla sonuç istiyorsanız SelectMany kullanın.
using System;
using System.Linq;
int[] nums = { 5, 1, 9 };
var doubled = nums.Select(n => n * 2);
Console.WriteLine($"In:{nums.Length} Out:{doubled.Count()}");Hızlı Kontrol
İş için doğru işleci seçin.
Özet
Select, her öğeyi yeni bir biçime — bir özelliğe, dizeye, anonim türe veya kayıt türüne — yansıtır; öğe sayısını ve sırayı bire bir korur. Dizin kullanan bir aşırı yüklemesi vardır ve ertelenmiş olarak çalışır.
SelectMany iç içe dizileri düzleştirir. Sırada, biçimlendirdiğimiz verileri sıralayıp gruplandıracağız.
Sıkça Sorulan Sorular
“SELECT ve Projeksiyon” dersi ücretsiz mi?
Evet — “SELECT ve Projeksiyon” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“SELECT ve Projeksiyon” dersinde ne öğreneceğim?
Verileri yeni biçimlere dönüştürün. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“SELECT ve Projeksiyon” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Where ve Filtreleme
- SELECT ve Projeksiyon
- OrderBy ve Gruplama
- Toplu İşlemler ve ToList