如何在MyTableClass继承Dictionary<int, MyTableClass>
的Field<F1, F2, F3>
中找到第一个值?我更希望使用“属性”或“属性/方法”组合来返回“字典”中第一个值F1 = MyEnum.value
。
我不想做的是foreach
。从性能角度来看,这实际上不是首选方法。
如何在MyTableClass继承Dictionary<int, MyTableClass>
的Field<F1, F2, F3>
中找到第一个值?我更希望使用“属性”或“属性/方法”组合来返回“字典”中第一个值F1 = MyEnum.value
。
我不想做的是foreach
。从性能角度来看,这实际上不是首选方法。
字典在元素之间不维护任何特定顺序,因此除非您指定某些顺序,否则实际上没有任何元素可以成为第一个元素。
您可以获得字典恰巧找到的第一个项目:
MyTableClass one = dict.Where(pair => pair.Value.F1 == MyEnum.value).First();
这将循环遍历各个项目,直到找到匹配项,因此您仅将字典用作列表。如果您需要任何演奏,则应该有一个字典,其中F1的值是键。
感谢大家的回答。我非常放心,foreach是完成我想要的事情的唯一方法-但是只是想看看是否有人有我没想到的想法...:)
– IAbstractNovember 17, 2009 16:51查找与某些条件匹配的值的最短方法(我不太了解您想要的具体内容-首先F1
是泛型类型参数,然后使用==
对其进行比较,就好像它是一个值...)就是这样做的:
dictionary.Values.First(x => ...);
其中...
将是x
上的布尔表达式。但是,这不会比foreach
快。...因为您没有在字典键上进行查找。仅密钥查找是快速的。对于其他任何事情,您都必须进行线性扫描(或为其他键维护第二个字典,这将是您要查找的内容)。 [从评论复制] >
您可以使用.First()扩展方法。
如果您可以在答案中添加更多上下文,将会有所帮助
– Edwin Ikechukwu OkonkwoSeptember 29, 2016 08:42 .First()在什么地方?在Dictionary
这是一种扩展方法,因此只有在导入System.Linq时才能看到它
– maxpower47September 29, 2016 15:41
@Pavel:哇…近两年来我学到了很多东西。我希望我知道然后我现在知道。
– IAbstractAugust 17, 2011 23:14就性能而言,您可以在此处执行的任何操作(如LINQ等)都不会快于
– Pavel MinaevNovember 13, 2009 20:33foreach
,因为您没有在字典键上进行查找。仅密钥查找是快速的。对于其他任何事情,您都必须进行线性扫描(或为其他键维护第二个字典,这将与您进行查找一样)。