c# - 获取元素页码

标签 c# linq oracle nhibernate linq-to-nhibernate

我在一个表中有 10,000 个项目,在客户端每页显示 20 个项目(可以额外过滤项目)

我需要在所有元素中找到项目。然后我需要获取页码,元素所在的位置并转到客户端上的该页面并选择它

我之前的问题是 Get item index (rownum) .

但是我没有得到任何答复。

可能还有另一种方法可以在不获取所有表格数据的情况下找到项目所在的页码?

我正在使用 Linq to Nhibernate,数据库 - Oracle。

编辑:感谢您的回复,但这并不容易

例子:

在表数据库中,我有

 ID          NAME 
 1           Item1 
 2           
 3
 4
 5
 20
 31
 .....        ....
 5000

在客户端,我过滤数据

query = query.Where(...).Where(...).Where(...).OrderBy(...)

得到结果

 ID                                         ROW_NUM_IN_QUERY
 4                                          1
 300                                        2
 2                                          3
 31                                         4
 .....        ....
 402                                        50
 800                                        51

我无法链接到字段 ID 或查询中的其他字段,因为它们的顺序可能不同

我可以通过简单的 SQL 获得 rownum。但是 Linq to NHibernate 做不到。如果不完全从表中获取数据,它就无法像 IndexOfRowNumber 那样工作。

这个变体:

var indexed = myDataSource.Select( (x,n) => new { Value = x, RowNumber = n } );

Not suported exception during execute query

最佳答案

首先,如果您不提供任何排序​​,那么索引的整个概念就毫无意义。接下来,没有简单、容易的方法来获得你想要的东西;它需要在某种程度上取决于特定的查询。

比方说,如果您要根据创建日期对数据进行排序,您可以这样做:

var someItem = queryToFetchIndividualItem;

var indexOfItem = table.OrderBy(item => item.CreatedDate)
//any other filtering provided on your query goes here, i.e. other where statements
.Where(item => item.CreateDate < someItem.CreatedDate)
.Count()

如果你按“标题”排序,那么你可以这样做:

var indexOfItem = table.OrderBy(item => item.Title)
//any other filtering provided on your query goes here, i.e. other where statements
.Where(item => item.Title < someItem.Title)
.Count()

我假设您在这里看到了模式。如果我们获得查询中感兴趣项目之前的项目计数,我们将获得索引。数据库可以针对我们只对计数感兴趣的事实优化查询。

关于c# - 获取元素页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285529/

相关文章:

Oracle排差调试技巧

oracle - Oracle PL/SQL dbms_crypto 包能否解密使用 Linux gpg 命令加密的文件?

c# - 如何在 Xamarin.Forms 中重用父 ContentView 中定义的样式

c# - 有人可以解释这个懒惰的评估代码吗?

c# - 如何从列表中选择在另一个列表/模型中没有相关对象的所有对象

c# - 从数组\列表中的字符串中删除非常量重复的单词

c# - 如何找到类型的接口(interface)继承层次结构?

c# - 如何在正则表达式中检查波斯字符格式

c# - 动态设置 C# 匿名类型的属性名称

sql - 替换 Oracle 过程中的字符串