从查找中获取键
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 - 而不是一个列表,则此方法有效以上是关于从查找中获取键的主要内容,如果未能解决你的问题,请参考以下文章