ASP.NET MVC - 如何从模型中获取随机记录?

发布于 2024-08-04 19:43:55 字数 471 浏览 1 评论 0原文

我不知道是否有一种简单的方法可以做到这一点,但基本上我想做的是:

var highlights = db.Banners.Where(h => h.Category == "highlight").ToList().GetRange(0,4);

我有这个模型横幅,其中有一些亮点,但我想每次以不同的顺序检索 4 个随机亮点。

因此,我使用的代码只是检索 [0..4] 突出显示的范围,如果少于 4 个,则会返回错误,并且它们不是随机的。

关于如何轻松做到这一点有什么想法吗?

我想要的结果是一个 List<Banner> 将其传递给视图,但每次都有不同的顺序,例如:

[1,3,4,2] || [2,1,4,3] || [12,32,15,3]

我想就是这样:)

非常感谢

I don't know if there is an easy way to do it but basically what I would like to do is:

var highlights = db.Banners.Where(h => h.Category == "highlight").ToList().GetRange(0,4);

I have this model Banners where I have some highlights but I would like to retrieve just 4 random highlights each time in different order.

So the code I'm using just retrieve a range from [0..4] highlights and if you have less than 4, it returns an error, and they are not randomised.

Any ideas on how could I do it easily?

The result I would like to have is a List<Banner> to pass it to the view but each time with different order like:

[1,3,4,2] || [2,1,4,3] || [12,32,15,3]

I think that's it :)

Thanks a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

节枝 2024-08-11 19:43:55

要随机化横幅并获得前四个或更少,您可以这样做:

Random r = new Random(DateTime.Now.Ticks);

var highlights = db.Banners.Where(h => h.Category == "highlight").
    OrderBy(h => r.Next()).Take(4)

To randomize banners and get first four or less you could do this:

Random r = new Random(DateTime.Now.Ticks);

var highlights = db.Banners.Where(h => h.Category == "highlight").
    OrderBy(h => r.Next()).Take(4)
红焚 2024-08-11 19:43:55

这里是 codeproject 上的随机 LINQ 采样示例

Here is an example of Random LINQ sampling on codeproject

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文