从查找中获取键

Posted

技术标签:

【中文标题】从查找中获取键【英文标题】:Getting keys from a Lookup 【发布时间】:2011-08-13 02:27:30 【问题描述】:

如何从通过 .ToLookup() 方法创建的 Lookup 中获取键的集合?

我有一个查找,它将 int 值映射到自定义类的实例组。我需要查找包含的所有 int 键的集合。有什么方法可以做到这一点,还是我必须单独收集和保存它们?

【问题讨论】:

【参考方案1】:

您可以遍历一组关键项组并读取键,例如

var keys = myLookup.Select(g => g.Key).ToList();

【讨论】:

关于为什么Lookup 不包含Keys 方法与Dictionary 不同的任何理论? 我不知道 - 最好的猜测可能是因为 Lookup 是由 LINQ 提供的,您可以使用 LINQ 来提取这样的键?以下是 .NET 参考源中的当前实现:Lookup、Dictionary。它们的内部存储看起来大致相同。 Dictionary 有自己的 KeyCollection 类,它也很容易适应 Lookup,但不只是按原样兼容。 也许与字典不同的是,查找并不只强制执行一组固定的键。您可以查询您喜欢的任何键,并得到有效的响应。它可能返回一个空集,但它仍然是一个有效的响应。【参考方案2】:

一种快速的方法:

var myKeys = myLookup.Select(l=>l.Key);

【讨论】:

如果您只需要一个 IEnumerable - 而不是一个列表,则此方法有效

以上是关于从查找中获取键的主要内容,如果未能解决你的问题,请参考以下文章

在php中如何取键?

idea右键取类路径和行数

java Map 根据Map的值(value)取键(key)

如何取未知Json字符串 某个主键取对应的Value

字典常用语法

为啥从类和实例中获取属性的查找过程不同?