2010-12-15 85 views
1

是否有一个开箱即用的.Net集合类型,它结合了Set和Dictionary语义,使得我只存储项目,但也可以快速查找,通过从每个项目中派生出来的某个密钥来启动?事情是这样的:.Net数据结构,结合了集合和字典语义

var foos = new KeyedSet<string, Foo>(foo => foo.ID); 

foos.Add(new Foo { ID = "X234", Descr = "One foo" }); 
foos.Add(new Foo { ID = "Q909", Descr = "Another foo" }); 

Console.WriteLine("Foo Q909 is {0}", foos["Q909"].Descr); 
+0

这是如何从正在使用字典有什么不同? – Joe 2010-12-15 02:48:27

+1

@Joe:一个字典需要'foos.Add(“X234”,新Foo {ID =“X234”,Descr =“One foo”});',这是多余的,单调乏味且容易出错的。我可以写一个辅助方法,但是我必须记得始终使用它。 – 2010-12-15 03:02:01

+0

可能的重复[有没有像集合的字典可以使用它的值的属性作为关键?](http://stackoverflow.com/questions/1773950/is-there-a-dictionary-like-collection-that -can-use-a-property-of-value-as-th) – nawfal 2013-11-05 05:31:19

回答