我有一个IQueryable,其中包含300多个对象:
public class Detail
{
public int Id { get; set; }
public int CityId { get; set; }
public bool Chosen { get; set; }
}
IQueryable<Detail> details = ...
我该如何反对随机选择50个对象?我假设我需要使用.ToList()进行转换,但是我不确定如何挑选随机元素。
最佳答案
300不是很大,所以可以,将其列为列表:
IQueryable<Detail> details = ...
IList<Detail> detailList = details.ToList();
现在您可以选择一个随机项目:
var randomItem = detailList[rand.Next(detailList.Count)];
您可以重复50次。但是,这将导致重复,并且消除它们的过程将变得困惑。
因此,使用standard shuffle algorithm然后选择前50个:
Shuffle(detailList);
var selection = detailList.Take(50);