是否可以将项插入特定索引中的NameValueCollection?我没有看到Insert()方法。
答案 0 :(得分:1)
不,没有方法可以在特定索引处插入项目。但是,为此做一个扩展方法应该是微不足道的。
你使用NameValueCollection的原因是什么?
答案 1 :(得分:1)
以下是Insert
的{{1}}扩展方法的实现:
NameValueCollection
答案 2 :(得分:0)
这不是NameValueCollection
的意思。如果您需要以这种方式操作集合,您应该考虑不同的数据结构(OrderedDictionary
?)。也就是说,这是一个可以做你想做的扩展方法:
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]);
}
}
}
我不知道collection.AllKeys
可以保证按照插入顺序返回密钥。如果你能找到证明情况属于这种情况的文件,那么上面就可以了。否则,请替换
List<string> keys = new List<string>(collection.AllKeys);
与
List<string> keys = new List<string>();
for(int i = 0; i < count; i++) {
keys.Add(collection.Keys[i]);
}