c# list - 如何将项目插入到键/值对对象中?




insert (7)

你可以使用OrderedDictionary ,但是我会质疑你为什么要这样做。

好的,这是一个垒球问题

我只需要能够将一个键/值对插入特定位置的对象。 我目前正在使用一个Hashtable,当然,这不允许这个功能。 什么是最好的方法?

更新:另外,我确实需要按键查找的能力。

例如...过于简单和伪装,但应该传达这一点

// existing Hashtable
myHashtable.Add("somekey1", "somevalue1");
myHashtable.Add("somekey2", "somevalue2");
myHashtable.Add("somekey3", "somevalue3");

// Some other object that will allow me to insert a new key/value pair.
// Assume that this object has been populated with the above key/value pairs.
oSomeObject.Insert("newfirstkey","newfirstvalue");

提前致谢。


我会使用Dictionary<TKey, TValue> (只要每个键是唯一的)。

编辑:对不起,意识到你想把它添加到一个特定的位置。 我的错。 你可以使用SortedDictionary,但是这仍然不会让你插入。


使用链接列表。 它是为了这个确切的情况而设计的。
如果您仍然需要字典O(1)查找,请同时使用字典和链接列表。



散列表不是固有排序的,最好的办法是使用另一种结构,如SortedList或ArrayList


List<KeyValuePair<string, string>> kvpList = new List<KeyValuePair<string, string>>()
{
    new KeyValuePair<string, string>("Key1", "Value1"),
    new KeyValuePair<string, string>("Key2", "Value2"),
    new KeyValuePair<string, string>("Key3", "Value3"),
};

kvpList.Insert(0, new KeyValuePair<string, string>("New Key 1", "New Value 1"));

使用这个代码:

foreach (KeyValuePair<string, string> kvp in kvpList)
{
    Console.WriteLine(string.Format("Key: {0} Value: {1}", kvp.Key, kvp.Value);
}

预期产出应该是:

Key: New Key 1 Value: New Value 1
Key: Key 1 Value: Value 1
Key: Key 2 Value: Value 2
Key: Key 3 Value: Value 3

同样可以使用KeyValuePair或任何你想使用的其他类型。

编辑 -

按键查找,您可以执行以下操作:

var result = stringList.Where(s => s == "Lookup");

您可以通过执行以下操作使用KeyValuePair执行此操作:

var result = kvpList.Where (kvp => kvp.Value == "Lookup");

上次编辑 -

针对KeyValuePair而不是字符串做出回答。


我试过这个,工作正常!

var initialArr = ["India","China","Japan","USA"];
initialArr.splice(index, 0, item);

索引是您要插入或删除元素的位置。 0即第二个参数定义要删除的索引中的元素数项是要在数组中创建的新条目。 它可以是一个或多个。

initialArr.splice(2, 0, "Nigeria");
initialArr.splice(2, 0, "Australia","UK");




c# insert list