2013-04-12 80 views
3

我想知道是否可以查看字典中的元素來檢查是否存在符合特定要求的元素。在我的情況下,我有一個Dictionary<string, Rectangle>和每個矩形值,我想檢查一個點是否包含在這個矩形使用Contains方法:(genericRectangleValue.Contains(aPoint))。按約束搜索字典值? (C#)

即我想要一些功能將與列表中的情況下,我可以說:

dictionaryList.Exists((delegate(KeyValuePair<string, Rectangle> kvp) { return kvp.Value.Contains(e.Location); }) 

...並記錄在案,是啊,我一直在使用List<KeyValuePair<string, Rectangle>>這個考慮,但是其他限制要求我使用Dictionary方法。

這對我來說不是一個關鍵問題,但是當你使用Dictionary時,有沒有辦法在不經過foreach循環的情況下做到這一點?

希望這可以幫助未來的其他人,乾杯!

回答

5

只需使用LINQ的Where詞典中的Values屬性:

dict.Where(x => condition) 

var rectsContainingLocation = dict.Values.Where(x => x.Contains(e.Location)); 

如果您還需要評估在狀態的關鍵,您可以直接在字典中使用Where

不要忘記在頂部添加using System.Linq;

+0

工程就像一個魅力,謝謝丹尼爾! :{)我發現自己經常在學習LINQ的多功能性!乾杯! (PS應該將LINQ標籤添加到這個問題中嗎?) – GroomedGorilla

+0

@JulianZammit:不需要添加LINQ標籤。你的問題不是*關於* LINQ。 LINQ只是一個可能的解決方案。 –