在.NET中插入NameValueCollection

时间:2009-12-17 17:28:23

标签: .net namevaluecollection

是否可以将项插入特定索引中的NameValueCollection?我没有看到Insert()方法。

3 个答案:

答案 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]);
}