c# - 如何使用 C# 从列表中选择随机对象?

标签 c# linq

我有一个包含 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/

相关文章:

c# - Linq - 从列表中取出 x 数量的不同项目

c# - 在 x.Kind = "value"时选择 Top(x)

c# - Linq 选择昨天的日期

c# - Ubuntu 下最好的 C++ 或 Mono 编程 IDE 是什么?

c# - 如何将矩形的边距绑定(bind)到顶部/底部和左/右的两个 slider

c# - VS Code 中的 System.Windows.Forms 程序集引用

c# - 如何在获取 IEnumerable 之前对对象使用 list.where 函数

sql - 我可以获得从 LinqDataSource 生成的 T-SQL 查询吗?

javascript - 如何将 C# 变量传递给 JavaScript 函数

C# - 将 View 作为参数传递给转换器