Remove Duplicate Items in List<T> C#
Merhaba,
List
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
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
İş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.
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.