LINQ tarzı Replace operatorü | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi
Ana Sayfa > C#, Programlama > LINQ tarzı Replace operatorü

LINQ tarzı Replace operatorü

12 March 2013

Bir dizideki elemanlardan, belli bir değere sahip olanları başka bir değerle değiştirecek bir methoda sahip olmak çok faydalıdır.

Language-Integrated Query (LINQ) bu amaç için standart bir sorgu işlecini sağlamaz ama oluşturması basittir.

Örneğin; string sınıfı Replace() isminde bir method barındırır ve değişkenin değerinde yer alan belli bir karakterin tamamını başka bir karakter ile değiştirir.

Aynı mantık ile diziler üzerinde çalışan bir method olsaydı çok kullanışlı olurdu.

Öncelikle static ExtensionMethods isimli bir sınıf oluşturalım;

public static class ExtensionMethods
{
}

Replace() methodunu yazalım;

public static IEnumerable<T> Replace<T>(this IEnumerable<T> list, T find, T replaceWith)
{
	if (list == null) throw new ArgumentNullException("sequence");

	foreach (T item in list)
	{
		yield return find.Equals(item) ? replaceWith : item;
	}
}

Örnek kullanım şekli;

int[] values = new int[] { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
int[] replacedInts = values.Replace(3, 0).ToArray();
 
// SONUÇ
// 1, 2, 0, 4, 5, 4, 0, 2, 1

string[] strings = new string[] { "A", "B", "C", "D", "C", "B", "A" };
string[] replacedStrings = strings.Replace("B", "-").ToArray();

// SONUÇ
// "A", "-", "C", "D", "C", "-", "A"