Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从字典列表中删除特定元素_C#_List_Dictionary - Fatal编程技术网

C# 如何从字典列表中删除特定元素

C# 如何从字典列表中删除特定元素,c#,list,dictionary,C#,List,Dictionary,我有一本字典 Dictionary <String, List<Object>> myDictionary; Dictionary-myDictionary; 更新字典的最佳方法是什么,以便通过已知键从列表中删除一个对象。例如,我想从列表中删除第三个对象。 移除将按特定键移除值。因此,它将删除与该键对应的整个列表。我想更新字典中的列表。您可以使用该方法 根据文档,该方法返回: 如果成功找到并删除元素,则为true;否则,错误。如果在字典中找不到键,则此方法返回fals

我有一本字典

Dictionary <String, List<Object>> myDictionary;
Dictionary-myDictionary;
更新字典的最佳方法是什么,以便通过已知键从列表中删除一个对象。例如,我想从列表中删除第三个对象。
移除将按特定键移除值。因此,它将删除与该键对应的整个列表。我想更新字典中的列表。

您可以使用该方法

根据文档,该方法返回:

如果成功找到并删除元素,则为true;否则,错误。如果在字典中找不到键,则此方法返回false

更新:

根据您更新的问题,您希望删除列表中的一个元素,这意味着首先获取字典的值,然后更改该值中的一个元素(在您的示例中是一个列表)。所以你可以使用列表的方法

List<Object> values;

if (myDictionary.TryGetValue("key", out values))
{
  // Here you have access to the list by using values, therefore you can modify your list here
  // Make sure, that the list really contains an element at index 3
  if (values.Count > 3)
      values.RemoveAt(3);
} 
列表值;
if(myDictionary.TryGetValue(“键”,输出值))
{
//在这里,您可以使用值访问列表,因此可以在这里修改列表
//确保列表在索引3处确实包含一个元素
如果(values.Count>3)
值。删除(3);
} 
是否更新字典以便从列表中删除一个对象

首先,您需要从字典中检索
列表
,例如,您可以使用键。可能是这样的:

if (myDictionary.TryGetValue("key", out List<Object> value)) {
  value.RemoveAt(2);
}
if(myDictionary.TryGetValue(“键”,输出列表值)){
移除值(2);
}
您可以使用获取基于键的值(如果存在,则可以获取
列表
引用)


由于上例中
值的引用与
口述使用的引用相同,因此您可以使用它从列表中删除第三个。对不起,这个答案如何更新词典,以便从列表中删除一个对象?@ErikPhilips:没有,因为我第一次回答问题时P没有说他想删除列表中的一个元素。在我回答后,问题被更新了-我也更新了我的答案;-)根据查看每个人都能做的,问题本身没有改变…@ErikPhilips,你是对的,似乎我当时读得太快了。。。我确信列表中没有关于该对象的任何说明,但在我的网站上已经很晚了-我可以睡觉了吗;-)投票支持这个答案,OP评论说:
Remove将按特定键删除值。因此,它将删除与该键对应的整个列表。我想更新字典里的列表。
@MarkiianBenovskyi人们通常不会阅读问题,而是根据事实上无法回答问题的假设来提问。我已经更新了我的答案,希望能为你的问题提供一个解决方案。如果您需要任何进一步的帮助,请让我知道。谢谢马库斯。这很有帮助。用Lambda表达式也可以这样做吗?以一种安全的方式,据我所知不是这样。您可以使用类似于
dict[“key1”]=dict[“key1”]的内容
但这需要密钥必须存在(否则您将获得KeyNotFoundException)。因此,这不是一个稳健的解决方案。
if (myDictionary.TryGetValue("key", out List<Object> value)) {
  value.RemoveAt(2);
}