从查找中获取密钥

56

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

我有一个将int值映射到自定义类的组的Lookup,我需要所有包含在lookup中的int键的集合。是否有任何方法可以做到这一点,或者我必须单独收集并保存它们?

2个回答

72

您可以遍历键-值对的集合并读取键,例如:

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

13
有没有任何理论解释为什么“Lookup”方法不像“Dictionary”一样包含“Keys”方法? - NetMage
我不确定,最好的猜测可能是因为Lookup由LINQ提供,并且您可以使用LINQ来提取键,就像这样?以下是.NET参考源中的当前实现:LookupDictionary。它们的内部存储看起来大致相同。Dictionary有自己的KeyCollection类,这很容易适应Lookup,但不能直接兼容。 - Rup
4
或许值得注意的是,与字典不同的是,查找操作并不仅限于一组固定的键。你可以查询任何你想要的键,并得到一个有效的回复。它可能返回一个空集合,但仍然是一个有效的响应。 - Tormod

15

一种快速的方法:

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

如果您只需要一个IEnumerable而不是List,这将起作用。 - KevinVictor
@KevinVictor 在方法链中添加 .ToList(),你就得到了一个列表。不难的。 - KeithS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接