我想知道是否可以查看字典中的元素来检查是否存在满足特定要求的元素。在我的情况下,我有一个Dictionary<string, Rectangle>
,对于每个Rectangle值,我想使用Contains
方法检查此矩形中是否包含一个点:({{ 1}})。
即。我喜欢一些功能,就像我可以说的列表那样:
genericRectangleValue.Contains(aPoint)
...并且为了记录,是的,我已经考虑过使用 dictionaryList.Exists((delegate(KeyValuePair<string, Rectangle> kvp) { return kvp.Value.Contains(e.Location); })
,但是其他限制要求我采用字典方法。
这对我来说不是一个关键问题,但是当你使用词典时,有没有办法在没有经过foreach循环的情况下这样做?
希望这对未来的其他人也有帮助,干杯!
答案 0 :(得分:5)
只需在字典的Where
属性上使用LINQ的Values
:
var rectsContainingLocation = dict.Values.Where(x => x.Contains(e.Location));
如果您还需要评估条件中的密钥,可以直接在字典上使用Where
:
dict.Where(x => condition)
不要忘记在顶部添加using System.Linq;
。