IAb*_*act 5 c# dictionary c#-3.0
如何Dictionary<int, MyTableClass>
在MyTableClass继承的位置找到第一个值Field<F1, F2, F3>
?我更喜欢Property或Property/Method组合,它返回Dictionary中的第一个值F1 = MyEnum.value
.
我不想做的是foreach
.在性能方面,这实际上不是首选方法.
找到符合某些条件的值的最短方法(我无法理解你想要的具体内容 - 首先F1
是泛型类型参数,然后你==
用来比较它就好像它是一个值......)就是这样做:
dictionary.Values.First(x => ...);
Run Code Online (Sandbox Code Playgroud)
where ...
将是一个布尔表达式x
.但是,这不会比foreach
... 更快,因为你没有对字典键进行查找.只有键查找很快; 除此之外,你必须进行线性扫描(或者为不同的密钥维护第二个字典,这将是你查找的任何内容).[从评论中复制]
无论你如何在这里打扮你,你基本上都必须foreach
超越价值观Dictionary
.A Dictionary<TKey,TValue>
为给定值的完整密钥提供接近O(1)的访问.它的目的不是提供对部分密钥的有效访问.为了得到它,你需要保持第二个Dictionary
实例进行适当的映射.
字典不保持元素之间的任何特定顺序,因此除非您指定一些排序,否则实际上没有任何元素可以是第一个元素.
您可以获得字典碰巧找到的第一个项目,如下所示:
MyTableClass one = dict.Where(pair => pair.Value.F1 == MyEnum.value).First();
Run Code Online (Sandbox Code Playgroud)
这将循环遍历项目,直到找到匹配项,因此您只是将字典用作列表.如果你想要任何表现,你应该有一个字典,其中F1的值是关键.