2017-10-11 5 views
-1

J'ai une liste de tuple entierAppliquer distinct sur la base de item2 de la liste des tuples entiers en C#

List<Tuple<int, int>> list = new List<Tuple<int, int>>(); 
list.Add(new Tuple<int, int>(1,12)); 
list.Add(new Tuple<int, int>(1,2)); 
list.Add(new Tuple<int, int>(1,18)); 
list.Add(new Tuple<int, int>(1,12)); 

Je veux supprimer la valeur redondante de item2 qui est 12 dans ce cas

La liste mise à jour devrait également être List>. (Même type), mais avec une nouvelle tuple de la liste de type distinct valeurs> ne doit contenir que ce qui suit:

list.Add(new Tuple<int, int>(1,2)); 
list.Add(new Tuple<int, int>(1,18)); 
list.Add(new Tuple<int, int>(1,12)); 

Toute aide?

+1

Ne vous souciez-vous que de la deuxième valeur de tuple? Ce qui signifie, c'est le seul dont vous avez besoin de distinguer? Ou seulement les doublons de item1 et item2? – maccettura

+0

donc c'est le problème j'ai besoin des deux valeurs, c'est-à-dire que je veux le tuple du même type avec les deux valeurs – Rimmy

+0

ce commentaire n'a aucun sens. Que se passe-t-il si vous avez un Tuple avec (2,12), cela devrait-il faire partie de votre sortie puisque la première valeur est unique ou devrait-elle être exclue parce que la deuxième valeur est un doublon? – maccettura

Répondre

0

Si vous voulez que les paires de chiffres unique, cela peut se faire facilement en utilisant Distinct():

list = list.Distinct().ToList(); 

Si vous ne vous préoccupez la suppression des doublons de ne Item2, puis utilisez GroupBy() et Select() le First() de chaque groupe:

list = list.GroupBy(x => x.Item2).Select(x => x.First()); 

J'ai fait un violon here qui démontre les méthodes

EDIT

De votre dernier commentaire, il semble que vous voulez utiliser la deuxième méthode que je propose (GroupBy Item2 et sélectionnez le premier de chaque groupe).