如何才能找到第一个值在Dictionary<int, MyTableClass>
其中MyTableClass继承Field<F1, F2, F3>
?我更喜欢属性或属性/方法组合,它返回字典中的第一个值F1 = MyEnum.value
。我不想做的是foreach
。在性能方面,这实在不是一个首选的方法。如何在字典中查找'第一个'值?
回答
无论你如何在这里打扮,你基本上必须做一个foreach
超过Dictionary
的值。 A Dictionary<TKey,TValue>
提供了接近于O(1)访问全键到给定值。它的目的不是为了提供对部分密钥的有效访问。为了得到您需要保留第二个Dictionary
实例进行适当的映射。
您可以使用.First()扩展方法。
。第一次()什么? Dictionary
将帮助,如果您可以添加更多的上下文到您的答案 – 2016-09-29 08:42:55
这是一种扩展方法,所以你只有当你导入System.Linq – maxpower47 2016-09-29 15:41:46
查找符合某些条件的值的最短途径(我无法完全理解您想要的具体内容 - 首先F1
是一个泛型类型参数,然后使用==
将其作为一个值进行比较.. )是做到这一点:
dictionary.Values.First(x => ...);
其中...
将在x
一个布尔表达式。但是,这不会比foreach
...更快,因为您没有对字典键进行查找。只有密钥查找速度快;对于其他任何事情,你必须做一个线性扫描(或为另一个键维护第二个字典,这将是你做任何查找)。
字典没有在元素之间保持任何特定的顺序,所以没有任何元素可以作为第一个元素,除非你指定了一些顺序。
你可以得到字典碰巧找到这样的第一个项目:
MyTableClass one = dict.Where(pair => pair.Value.F1 == MyEnum.value).First();
这只会通过项目循环,直到它找到一个匹配,所以你只是用字典为列表。如果你想要任何表演,你应该有一本字典,其中F1的值是关键。
谢谢大家的答案。我非常确定,foreach将是唯一能够做我想做的事情的方法 - 但只是想看看有没有人想过我的想法...... :) – IAbstract 2009-11-17 16:51:46
- 1. 在字典中找到一个值?
- 2. 查找字典值中的项目,在长度为1的另一个字典值中查找
- 3. 如何在javascript字典中使用键值查找值
- 4. 在范围字典中查找值 - python
- 5. 如何在字典列表中查找键值不一致的值
- 6. 如何在Python中查找嵌套字典的元素(字典)
- 7. 将第一个字典键与第二个字典值结合起来
- 8. 如何显示字典数组UITableview第一节中的第一个值和UITableview第二节中的剩余值?
- 9. 在SQL查询(DB2)中,如何在另一个字段中查找字段值?
- 10. 查找哪个范围确实的值位于一个字典
- 11. 如何从嵌套字典中查找
- 12. 根据字典中的值查找第一组相同组的索引
- 13. json.loads允许重复键在字典中,覆盖第一个值
- 14. 如何查找字符串中的所有第一个索引?
- 15. 蟒蛇查找字典在字典
- 16. 查找字典
- 17. 查找字典
- 18. 如何查找asp.net/javascript中的文本框值的第一个数字?
- 19. 如何检查在Python中的字典中的多个值
- 20. 如何在字典中交换2个值,给定第3个关键字?
- 21. 检查一个字典中的值是否包含另一个字典
- 22. 如何检查字典中的值?
- 23. 如何检查字典中的值?
- 24. 如何使用python在字符串中查找第一个非大写字母
- 25. 如何查找第二个最大值在C++循环中
- 26. 在字符串中查找第一个数字序列?
- 27. 在字符串中查找字符串的第一个实例
- 28. 如何找到在C中第一个字符的字符串++
- 29. 如何通过键查找/检查字典值
- 30. 我如何能断定一个数组字典查找匹配的值
性能方面,你可以在这里做的任何事情 - LINQ等 - 不会比'foreach'快,因为你没有对字典键进行查找。只有密钥查找速度快;对于其他任何事情,你必须做一个线性扫描(或为另一个键维护第二个字典,这将是你做任何查找)。 – 2009-11-13 20:33:55
@Pavel:哇...我在近2年中学到了很多东西。我希望我知道我现在知道的。 – IAbstract 2011-08-17 23:14:15