0
var dd = new Dictionary<Guid, object>(); //readonly in my real code
dd.Add( Guid.NewGuid() , 'a');
dd.Add( Guid.NewGuid() , 'a');
dd.Add( Guid.NewGuid() , 'a');
var randone = dd.ElementAt(new Random(dd.Count()).Next(dd.Count));

我想尽可能快地从 dd 中获取一个随机值(每毫秒计数),但我很确定我不会对上面的示例执行此操作。如何重做 randone 以获得随机的 KeyValuePair?在实际代码中,key 实际上是一个 GUID,但 value 是一个自定义的 POCO。

4

1 回答 1

2

如果您可以将所有键保存在一个中,List<T>那么您可以选择一个介于 0 和 List.Count 之间的随机数。使用该数字(简单查找)索引到列表中,然后使用它来索引到您的字典中。

于 2013-10-09T01:19:12.760 回答