List<KeyValuePair<string, bool>> temp = AnArray.Where(p => !p.Value).ToList();
var randomItem = temp.ElementAt(rand.Next(0, temp.Count - 1)).Key;
上面的代码是我当前正在执行的方式。但是.ToList()和某种类型的.Where()也在我的工作流程中占用了大量CPU。
是否有任何独特的方法可以使用最少的CPU从枚举中随机选择1个元素,而不必执行ToArray / ToList或可能也不使用Random()?
答案 0 :(得分:-2)
您可以使用.Skip()避免所有这些情况
所以您最终得到了:
var item = AnArray.Where(p =>!p.Value).Skip(rand.Next(0,temp.Count-1))。First()。Key;