有没有一种方法可以从可枚举中随机选择而无需计数或强制转换为数组?

时间:2018-09-24 12:01:47

标签: c#

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()?

1 个答案:

答案 0 :(得分:-2)

您可以使用.Skip()避免所有这些情况

所以您最终得到了:

var item = AnArray.Where(p =>!p.Value).Skip(rand.Next(0,temp.Count-1))。First()。Key;