有谁知道如何使用 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/