我有一个包含 300 多个对象的 IQueryable:
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);
关于c# - 如何使用 C# 从列表中选择随机对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19836449/