Listeleri birleştirmek C# programlamanın temel bir işlemidir. Bu makale, her birinin kendi avantajları ve kullanım durumlarıyla listeleri birleştirmek için çeşitli etkili teknikleri ele almaktadır. Yinelenenleri kaldırma veya öğeleri eşleştirme gibi daha karmaşık işlemlere kadar basit birleştirmeden farklı yaklaşımları inceleyeceğiz.
İçindekiler
AddRange()
ile Listeleri BirleştirmeConcat()
(LINQ) kullanarak Listeleri Birleştirmeforeach
Döngüsü ile Manuel Liste BirleştirmeUnion()
(LINQ) ile Listeleri Birleştirme ve Yinelenenleri KaldırmaInsertRange()
ile Bir Listeyi Başka Bir Listeye EklemeZip()
Metodu ile Öğeleri Eşleştirme- Sonuç
AddRange()
ile Listeleri Birleştirme
AddRange()
metodu, bir listeyi diğerinin sonuna eklemek için doğrudan ve verimli bir yol sunar. Bu metot orijinal listeyi değiştirir.
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
list1.AddRange(list2);
Console.WriteLine("Birleştirilmiş Liste:");
Console.WriteLine(string.Join(" ", list1)); // Çıktı: 1 2 3 4 5 6
}
}
Concat()
(LINQ) kullanarak Listeleri Birleştirme
LINQ’un Concat()
metodu, liste birleştirme için salt okunur bir yaklaşım sağlar. Orijinallerini değiştirmeden her iki giriş listesinden gelen tüm öğeleri içeren yeni bir liste oluşturur.
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
var joinedList = list1.Concat(list2).ToList();
Console.WriteLine("Birleştirilmiş Liste:");
Console.WriteLine(string.Join(" ", joinedList)); // Çıktı: 1 2 3 4 5 6
}
}
foreach
Döngüsü ile Manuel Liste Birleştirme
foreach
döngüsü kullanan manuel bir yaklaşım, özellikle daha karmaşık birleştirme mantığıyla uğraşırken maksimum kontrol sağlar.
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
List<int> joinedList = new List<int>();
joinedList.AddRange(list1);
foreach (int num in list2)
{
joinedList.Add(num);
}
Console.WriteLine("Birleştirilmiş Liste:");
Console.WriteLine(string.Join(" ", joinedList)); // Çıktı: 1 2 3 4 5 6
}
}
Union()
(LINQ) ile Listeleri Birleştirme ve Yinelenenleri Kaldırma
Union()
metodu, yinelenen girişleri ortadan kaldırarak iki listeyi verimli bir şekilde birleştirir.
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 3, 4, 5 };
var joinedList = list1.Union(list2).ToList();
Console.WriteLine("Birleştirilmiş Liste (yinelenenler kaldırıldı):");
Console.WriteLine(string.Join(" ", joinedList)); // Çıktı: 1 2 3 4 5
}
}
InsertRange()
ile Bir Listeyi Başka Bir Listeye Ekleme
InsertRange()
, belirtilen bir indekste bir listenin diğerine hassas bir şekilde eklenmesini sağlar.
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
list1.InsertRange(2, list2); // 2. indeksten başlayarak list2'yi ekler
Console.WriteLine("Birleştirilmiş Liste:");
Console.WriteLine(string.Join(" ", list1)); // Çıktı: 1 2 4 5 6 3
}
}
Zip()
Metodu ile Öğeleri Eşleştirme
Zip()
metodu, indekslerine göre iki listeden karşılık gelen öğeleri eşleştirir. Bu, ilişkisel bir yazışması olan öğeleri birleştirmeniz gerektiğinde yararlıdır.
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<string> list1 = new List<string> { "A", "B", "C" };
List<int> list2 = new List<int> { 1, 2, 3 };
var zippedList = list1.Zip(list2, (str, num) => str + num).ToList();
Console.WriteLine("Eşleştirilmiş Liste:");
Console.WriteLine(string.Join(" ", zippedList)); // Çıktı: A1 B2 C3
}
}
Sonuç
C#, liste manipülasyonu için zengin bir araç seti sunar. Metot seçimi, görevinizin özel gereksinimlerine büyük ölçüde bağlıdır. Orijinal listeleri değiştirmeniz, yinelenenleri kaldırmanız veya karşılık gelen öğeleri eşleştirmeniz gerekip gerekmediğini, en uygun yaklaşımı seçerken göz önünde bulundurun.