Quels éléments seront supprimés de la liste résultante lorsque DISTINCT.ToList()
est appliqué dans l'illustration suivante? La première entrée (c'est-à-dire qui a été ajoutée en premier à la liste) parmi les doublons est-elle conservée dans la nouvelle liste renvoyée? Sinon, existe-t-il un moyen de rendre le DISTINCT.ToList()
pour conserver la première entrée parmi les doublons de la nouvelle liste renvoyée?L'ordre de renvoi des éléments dans la liste résultante lors de l'utilisation de List.Distinct()
Dim values As List(Of Integer) = New List(Of Integer)
values.Add(1)
values.Add(5)
values.Add(2)
values.Add(3)
values.Add(2)
values.Add(3)
values.Add(4)
values.Add(2)
values.Add(2)
values.Add(3)
values.Add(3)
values.Add(3)
Dim items As List(Of Integer) = values.Distinct().ToList
' Display result.
For Each i As Integer In items
Console.WriteLine(i)
Next
Expected output:
1
5
2
3
4
Cette MSDN dit la page "Le Distinct (Of TSource) (IEnumerable (Of TSource)) renvoie une séquence non ordonnée qui ne contient pas les valeurs en double". Y a-t-il un moyen de contourner ceci?
En fait, aucun élément ne sera supprimé de la liste, une nouvelle liste contenant des éléments distincts est retournée. – hellowstone
Vous pouvez toujours ajouter vous-même une méthode d'extension qui l'ordonne: 'public static IOrderedEnumerable OrderedDistinct (cette donnée IEnumerable ) {return data.Distinct(). OrderBy (x => x); } ' –
Maarten
La liste retournée avec l'opération' Distinct' ne contient que les premiers éléments originaux et il n'y a pas d'ordre. Vous devez donc vous attendre à la sortie attendue dans votre exemple. – hellowstone