我正在使用带有分页的网格,该网格使用Linq来获取数据:
Context.Table.Where(a => a.Name.StartsWith(filter)).OrderBy(a => a.Id).Skip(skip).Take(take);
现在,我需要一个网格以自动在UI中显示特定记录。因此,我需要为此记录找到一个页面以及该页面上的相对位置。
要查找行号,我可以这样使用SQL:
select rn
from (
select row_number() over (order by id) rn, id
from table a
where a.name like 'test%'
--and global filters here
) a
where id = @recordId
然后计算page = rn / pageSize
和position = rn % pageSize
如何使用Linq和EF Core进行此SQL查询?(因此可以自动进行其他设置,例如动态排序和全局过滤器。)
我需要像这样贴面:
Context.Table
.Where(a => a.Name.StartsWith(filter))
.OrderBy(a => a.Id)
.Select((a, index) => new { Row = a, Index = index })
.Where(a => a.Row.Id == recordId)
.Select(a => a.Index)
.FirstOrDefault();
但是此代码引发异常:
此方法'System.Linq.Queryable.Select'的重载为 当前不支持。