【问题标题】:How to get all the keys (only keys) from dictionary object without going through for each loop如何从字典对象中获取所有键(仅键)而不经过每个循环
【发布时间】:2011-07-08 11:20:14
【问题描述】:

我检查我们是否有任何方法可以在不使用 for each 循环的情况下将所有键返回到数组(对于我正在寻找的每个循环,我没有使用限制是否有其他方法)

提前致谢

【问题讨论】:

标签: c# asp.net collections dictionary oop


【解决方案1】:

从你的措辞中我不确定你是想要键还是值。无论哪种方式,它都非常简单。使用字典的KeysValues 属性和ToArray 扩展方法。

var arrayOfAllKeys = yourDictionary.Keys.ToArray();

var arrayOfAllValues = yourDictionary.Values.ToArray();

【讨论】:

  • hm... 它对我不起作用 - System.Collections.Generic.Dictionary.KeyCollection' 不包含 'ToArray' 的定义并且没有扩展方法 'ToArray ' 可以找到接受“System.Collections.Generic.Dictionary.KeyCollection”类型的第一个参数(您是否缺少 using 指令或程序集引用?)
  • @Chiz: ToArray 是一种 LINQ 扩展方法,因此您需要在代码顶部添加一个 using System.Linq; 指令。
【解决方案2】:

你想要键还是值?

你可以像这样得到的钥匙:

dictionary.Keys.ToArray();

你可以这样得到的值;

dictionary.Values.ToArray();

这个 ToArray 方法来自 System.Linq.Enumerable。

【讨论】:

    【解决方案3】:
    string[] myKeys;
    myKeys = myDictionary.Keys.ToArray();
    

    未经测试,但我不明白它为什么会起作用。

    【讨论】:

    • 这段代码:var arrayOfAllKeys = yourDictionary.Keys.ToArray(); LukeH 发帖比较好,因为这段代码越少越容易理解。和可通过代码访问的值:arrayOfAllKeys.[0].ToString(); 谢谢。
    【解决方案4】:

    你可以使用:-

    dict.Select(p => $"Keys in dict: {p.Key}")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 2016-08-08
      • 2022-06-19
      • 1970-01-01
      • 2018-09-02
      • 2016-12-18
      相关资源
      最近更新 更多