.net 如何从列表中选择5个随机对象,但一旦选择了一个对象,就排除具有相同属性值的其他对象

b4lqfgs4  于 2023-01-06  发布在  .NET
关注(0)|答案(1)|浏览(100)

我正在.NET 6上创建一个测验应用程序API,并有一个问题列表,每个问题都连接到一张图片。问题以随机顺序发送。我使用以下代码来实现这一点:

var finalQuestionsOneToFive = _context.Questions.Where(q => q.Test.Id == id)
    .ToList().OrderBy(x => random.Next()).Take(5).ToList();

问题类当前具有以下属性:

public class Question
{
    public int Id { get; set; }
    public string Task { get; set; } = string.Empty;
    public string Picture { get; set; } = string.Empty;
}

使用此代码,我成功地发送了5个随机问题的测试,我面临的问题是,我有问题,我使用相同的图片,我想避免问题与相同的图片被选中。有没有办法让“随机选择器”跳过问题与相同的图片字符串一旦一个问题与该图片字符串被选中?

xytpbqjk

xytpbqjk1#

我不确定,但试试这个:DistinctBy

_context.Questions.Where(q => q.Test.Id == id)
.OrderBy(x => random.Next()).DistinctBy(x =>x.Picture).ToList();

相关问题