如何才能找到第一個值在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. 如何在字典中打印第一個值
- 4. 如何在javascript字典中使用鍵值查找值
- 5. 在範圍字典中查找值 - python
- 6. 遍歷兩個數組在一個字典查找值
- 7. 如何在列中查找第一個非零值?
- 8. 訪問字典python中第一個鍵的第三個值
- 9. 字典作爲查找值
- 10. 如何在Python中查找嵌套字典的元素(字典)
- 11. 如何在字典列表中查找鍵值不一致的值
- 12. 如何在字典中查找重複值
- 13. 在字典中的第一個項目
- 14. 將第一個字典鍵與第二個字典值結合起來
- 15. 如何顯示字典數組UITableview第一節中的第一個值和UITableview第二節中的剩餘值?
- 16. 查找,或插入只有一個在C#字典查找
- 17. 在SQL查詢(DB2)中,如何在另一個字段中查找字段值?
- 18. 字典中的第一個鍵值對被下一個覆蓋
- 19. 如何查找字典數組中的第一個索引,其中「名稱」鍵以某個字母開頭?
- 20. 如何從嵌套字典中查找
- 21. 查找哪個範圍確實的值位於一個字典
- 22. 查找字典中的最小值
- 23. 查找字典中的特定值,Python
- 24. 從嵌套字典中查找值
- 25. 在Python中查找字符串中是否存在字典值?
- 26. 根據字典中的值查找第一組相同組的索引
- 27. json.loads允許重複鍵在字典中,覆蓋第一個值
- 28. 如何查找字符串中的所有第一個索引?
- 29. 蟒蛇查找字典在字典
- 30. 查找字典
性能方面,你可以在這裏做的任何事情 - LINQ等 - 不會比'foreach'快,因爲你沒有對字典鍵進行查找。只有密鑰查找速度快;對於其他任何事情,你必須做一個線性掃描(或爲另一個鍵維護第二個字典,這將是你做任何查找)。 – 2009-11-13 20:33:55
@Pavel:哇...我在近2年中學到了很多東西。我希望我知道我現在知道的。 – IAbstract 2011-08-17 23:14:15