Est-il possible d'insérer un élément dans une NameValueCollection dans un index spécifique? Je ne vois pas une méthode Insert().Insérer dans NameValueCollection dans .NET
Répondre
Voici une implémentation d'une méthode d'extension Insert
pour NameValueCollection
:
static class ColExtensions
{
private class KeyValuesPair
{
public string Name { get; set; }
public string[] Values { get; set; }
}
public static void Insert(this NameValueCollection col, int index, string name, string value)
{
if (index < 0 || index > col.Count)
throw new ArgumentOutOfRangeException();
if (col.GetKey(index) == value)
{
col.Add(name, value);
}
else
{
List<KeyValuesPair> items = new List<KeyValuesPair>();
int size = col.Count;
for (int i = index; i < size; i++)
{
string key = col.GetKey(index);
items.Add(new KeyValuesPair
{
Name = key,
Values = col.GetValues(index),
});
col.Remove(key);
}
col.Add(name, value);
foreach (var item in items)
{
foreach (var v in item.Values)
{
col.Add(item.Name, v);
}
}
}
}
}
Non, il n'y a pas de méthode pour insérer un élément à un index spécifique. Cependant, il devrait être trivial d'écrire une méthode d'extension pour le faire.
Quelle est la raison pour laquelle vous utilisez une NameValueCollection?
Ce n'est pas vraiment ce à quoi les NameValueCollection
sont destinés; Si vous devez manipuler votre collection de cette manière, vous devriez envisager une structure de données différente (OrderedDictionary
?). Cela dit, voici une méthode d'extension qui va faire ce que vous voulez:
static class NameValueCollectionExtensions {
public static void Insert(this NameValueCollection collection, int index, string key, string value) {
int count = collection.Count;
if (index < 0 || index > count) {
throw new ArgumentOutOfRangeException("index");
}
List<string> keys = new List<string>(collection.AllKeys);
List<string> values = keys.Select(k => collection[k]).ToList();
keys.Insert(index, key);
values.Insert(index, value);
collection.Clear();
for (int i = 0; i <= count; i++) {
collection.Add(keys[i], values[i]);
}
}
}
Je ne sais pas que collection.AllKeys
est garanti à remettre les clés dans l'ordre qu'ils ont été insérés. Si vous pouvez trouver la documentation indiquant que c'est le cas, alors ce qui précède est bien. Dans le cas contraire, remplacez la ligne
List<string> keys = new List<string>(collection.AllKeys);
avec
List<string> keys = new List<string>();
for(int i = 0; i < count; i++) {
keys.Add(collection.Keys[i]);
}
- 1. Encode valeurs dans un NameValueCollection C# .net
- 2. Lier NameValueCollection à GridView?
- 3. ASP.Net et NameValueCollection
- 4. Recherche efficace de NameValueCollection
- 5. Trier NameValueCollection contre Enum
- 6. Générer un script Insérer .net
- 7. Insérer du code HTML dans un document Word OpenXML (.Net)
- 8. Insérer une instruction Join - (Insérer des données dans plusieurs tables) - C#/SQL/T-SQL/.NET
- 9. Château Windsor: Injecter NameValueCollection vs Dictionnaire
- 10. IDictionary <string, string> ou NameValueCollection
- 11. Insérer INTO dans vb.net
- 12. insérer des objets dans
- 13. Insérer Javascript dans ASP.net
- 14. Insérer dans l'instruction SQL
- 15. SQLite pas insérer dans
- 16. Insérer vCard dans Android
- 17. Insérer UImageVIew dans UITextField
- 18. insérer dans MySQL
- 19. Mysql, « insérer dans «
- 20. comment insérer DATETIME dans
- 21. Que se passe-t-il dans les coulisses pendant la désérialisation d'une NameValueCollection?
- 22. Comment insérer la valeur des lignes sélectionnées de Gridview dans la base de données dans .net
- 23. Insérer du texte dans une ligne particulière d'une zone de texte dans .Net
- 24. Comment puis-je insérer plusieurs lignes dans la table à la fois dans MVC asp. Net?
- 25. Insérer 65535 lignes dans SQL Server 2008
- 26. insérer dans sql query dans wpf
- 27. Insérer tableau dans un champ dans MySQL
- 28. Comment insérer XHTML dans XML
- 29. Insérer un caractère dans NSString
- 30. insérer de l'espace dans xslt
pourquoi avez-vous besoin? –
Parce que j'ai besoin d'insérer un élément au début de la collection. NameValueCollections gère l'ordre des éléments. –