Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net




 
Rserit
Developer
       
 1026  
 278

Remove Duplicate Items in List<T> C#

Merhaba,
List içerisinde aynı değerlerden varsa, bunları silmenin birçok yolu mevcut.

1. yol: List değerlerini Array haline getirip, indexleri karşılaştırmak

Söyle bir örnekle daha iyi anlaşılır:

var ListResult = new HashSet(Result).ToList();
while (index < ListResult .Count - 1)
{
if (Result[index].ProductName == Result[index + 1].ProductName)
Result.RemoveAt(index);
else
index++;
}

Yukarıdaki kod kısaca şunu yapmakta, List öğemi HashSet'e dönüştürüyor. Ardından While döngüsüyle index değerlerini karşılaştırıyor, eşit olan varsa siliyor.

İşinizi görecektir.

2. yol: Distinct ile çözmek.

Bu yöntem ise çok daha basit. Tek yapmanız gereken ToList demeden önce Distinct() demek olacak.

Örnek:

var ListResult = List.Distinct().ToList();

Umarım faydalı olur,
Recep.

Bu gönderiyi 24.06.2017 11:37:48 tarihinde Rserit düzenledi.

Developer.


 
Rserit
Developer
       
 1026  
 278

1. yola istinaden küçük bir not, orada bir kontrol de yaptırmalısınız.
İki farklı öğeyi denetmemiz gerek: ListResult ve Result öğeleri. Neden peki? Çünkü döngü ListResult toplamı kadar dönecek, bu esnada Result'taki dublicate öğeleri silecek. Yani Result'taki item sayısıyla ListResult'taki sayı bir olmayacak. Bu bakımdan index 9 geldiğini varsayalım ancak Result'ta toplam 8 tane kalırsa? Dizin aralık dışındaydı hatasını alacaksınız. Bu bakımdan şu kontrol yapılmalı:

Döngünün başında şunu yazabilirsinniz.

if(index >= Result.Count -1)
break;

Yani index sayısı Result öğelerinden büyük ya da eşit olduğunda döngüden çık. Böylelikle hata almamış olursunuz.

Developer.