Comment puis-je supprimer un élément de la liste de KeyValuePair?C# - Supprimer un élément de la liste de KeyValuePair
Répondre
Si vous avez la clé et la valeur que vous pouvez faire la
public static void Remove<TKey,TValue>(
this List<KeyValuePair<TKey,TValue>> list,
TKey key,
TValue value) {
return list.Remove(new KeyValuePair<TKey,TValue>(key,value));
}
suivante Cela fonctionne parce que KeyValuePair<TKey,TValue>
ne l'emporte pas sur l'égalité, mais est un struct. Cela signifie qu'il utilise la valeur par défaut égalité. Cela compare simplement les valeurs des champs pour tester l'égalité. Il vous suffit donc de créer une nouvelle instance KeyValuePair<TKey,TValue>
avec les mêmes champs.
EDIT
Pour répondre à un intervenant, quelle valeur une méthode d'extension fournir ici?
La justification est mieux vu dans le code. Dans le cas où le type de clé ou de valeur est un type anonyme, une méthode d'extension est également requise.
EDIT2
Voici un exemple sur la façon d'obtenir KeyValuePair où l'un des deux a un type anonyme.
var map =
Enumerable.Range(1,10).
Select(x => new { Id = x, Value = x.ToString() }).
ToDictionary(x => x.Id);
La carte variable est un Dicitonary<TKey,TValue>
où TValue
est un type anonyme. L'énumération de la carte produira un KeyValuePair avec le TValue
étant le même type anonyme.
Doit pouvoir utiliser le .Remove(), .RemoveAt(), ou l'une des autres méthodes.
List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();
KeyValuePair<string, string> kvp = list[i];
list.Remove(kvp);
ou
list.Remove(list[1]);
Vous devez obtenir une référence à l'objet que vous souhaitez supprimer - c'est la raison pour laquelle j'ai trouvé l'article que je suis à la recherche et affecté à un KeyValuePair - puisque vous dire pour supprimer un élément spécifique.
Une meilleure solution pourrait être d'utiliser un dictionnaire:
Dictionary<string, string> d = new Dictionary<string, string>();
if (d.ContainsKey("somekey")) d.Remove("somekey");
Cela vous permet de supprimer la valeur clé au lieu d'avoir à faire face à la liste ne sont pas indexées par la clé.
Éditez vous ne devrez peut-être pas obtenir d'abord une référence KeyValuePair. Pourtant, un dictionnaire est probablement un meilleur moyen d'y aller.
Pour supprimer tous les éléments de la liste par clé:
myList.RemoveAll(x => x.Key.Equals(keyToRemove));
Bien que n'étant pas la meilleure réponse expliquée, cela fera dans la plupart des cas le tour quand vous avez la valeur de la clé pour travailler avec. –
Voici quelques exemples de la suppression d'un élément dans une liste de KeyValuePair:
// Remove the first occurrence where you have key and value
items.Remove(new KeyValuePair<int, int>(0, 0));
// Remove the first occurrence where you have only the key
items.Remove(items.First(item => item.Key.Equals(0)));
// Remove all occurrences where you have the key
items.RemoveAll(item => item.Key.Equals(0));
EDIT
// Remove the first occurrence where you have the item
items.Remove(items[0]);
- 1. Supprimer un élément d'une zone de liste quitte la zone de liste sans élément sélectionné
- 2. Rechercher et supprimer un élément de la liste
- 3. Comment supprimer un élément spécifique sur la liste
- 4. Supprimer un élément de classe
- 5. Linqtosql supprimer de la liste
- 6. Pouvez-vous supprimer un élément d'une liste <> tout en le parcourant en C#
- 7. Supprimer un élément avec JQuery
- 8. MFC - Comment désactiver un élément de liste?
- 9. Création d'un KeyValuePair en C++ géré
- 10. Extrait un seul élément de la liste dans F #
- 11. Animer un élément supprimé dans la zone de liste
- 12. RIA Services - Obtenir DataContext dans un élément de la liste
- 13. Modifier l'action en cliquant sur un élément de la liste
- 14. Supprimer l'élément de la liste Sharepoint
- 15. Python: supprimer le dictionnaire de la liste
- 16. PFX ConcurrentQueue - est-il un moyen de supprimer un élément spécifique de la file d'attente
- 17. Supprimer des doublons de la liste des listes en Python
- 18. C# tableau Déplacer un élément (Non ArrayList/Liste générique)
- 19. obtenir un guid d'un élément de la liste d'une liste de sharepoint
- 20. Comment convertir C++ std :: élément de liste Multimap iterator
- 21. Supprimer un élément arbitraire d'un tableau JavaScript
- 22. NHibernate supprimer un élément dans la collection ne fonctionne pas
- 23. La sélection d'un élément dans une zone de liste
- 24. Comment supprimer un élément APRÈS l'achèvement de l'animation?
- 25. Comment supprimer un élément de l'Office Menu Orb dans Outlook
- 26. Meilleure façon de supprimer un élément in situ
- 27. C# Renvoyer un élément de la poignée d'exception
- 28. Est-il acceptable de renvoyer un KeyValuePair d'une fonction .NET?
- 29. C# Valeur du paramètre de performance pour chaque élément de la liste
- 30. dropdownlist se lient gridview à la liste <KeyValuePair <int, string>>
Mis à part les quelques erreurs de syntaxe contenues, quelle est la valeur de cette méthode d'extension visant à p rovide? –
@Derek, supprime le besoin de spécifier des arguments génériques à une définition de type lors d'une suppression. list.Remove (clé, valeur) vs list.Remove (nouveau KeyValuePair (clé, valeur)). Le premier est beaucoup plus concis. Je ne pense pas qu'un -1 mérite une erreur de syntaxe mineure –
JaredPar
J'ai voté cette réponse parce que je ne pensais pas que l'utilisation d'une méthode d'extension fournissait une réponse claire et concise ou une valeur ajoutée, pas due aux erreurs de syntaxe. –