gpt4 book ai didi

linq - NHibernate - 使用 LINQ 选择随机记录数

转载 作者:行者123 更新时间:2023-12-01 23:24:22 25 4
gpt4 key购买 nike

有谁知道如何使用 LINQ 在 NHibernate 中选择随机数的记录。

我希望我可以这样说:

var rand = new Random();
var test = session.Query<Entity>().OrderBy(x => rand.Next()).Take(5).ToList();

但是它不喜欢 OrderBy 表达式中的变量。一种选择是在我进行排序之前调用 ToList,但这会获取整个记录集,这并不理想,因为它可能会返回数千条记录。

我还发现了以下内容(向下滚动到底部答案):

NHibernate Insert into ... select ... with GUID as PrimaryKey

但是我不确定如何使用 LINQ 调用它。如果有人能提供帮助,我将不胜感激。谢谢

最佳答案

此解决方案可能不是很好,因为它会改变您实体的形状,但如果您的用例可以接受...

根据 Ayende 的这篇文章,将 SQL 函数映射到实体的属性似乎非常容易:

http://ayende.com/blog/1720/using-sql-functions-in-nhibernate

你能添加一个像

这样的属性映射吗

<property name='Random' formula='NEWID()'/>

您针对的实体?然后你应该能够写一个像

这样的查询

var test = session.Query<Entity>().OrderBy(x => x.Random).Take(5).ToList();

关于linq - NHibernate - 使用 LINQ 选择随机记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com