我有一个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);

10-04 20:30