在LINQ查询中使用顺序查询和跳过时遇到错误
本文关键字:查询 过时 遇到 错误 LINQ 顺序 | 更新日期: 2023-09-27 18:12:14
我编写了一个关于实体的查询:
public List<Cliente> ListarClienteCobrancaPaginado(string args, int take, int skip)
{
var list = from cliente in _clienteRepositorio.UnitOfWork.QueryableFor<Cliente>()
join conta in _clienteRepositorio.UnitOfWork.QueryableFor<MovimentacaoConta>()
on cliente.PessoaId equals conta.PessoaId
where (conta.MovimentacoesContaParcelas.Any(p => p.DataVencimentoReal.Value > DateTime.Now)
&& cliente.Pessoa.Nome.ToLower().StartsWith(args.ToLower()))
|| (conta.MovimentacoesContaParcelas.Any(p => p.DataPagamento.Value == null)
&& cliente.Pessoa.Nome.ToLower().StartsWith(args.ToLower()))
select cliente;
return list.Include(p=>p.Pessoa)
.OrderBy(x=>x.Pessoa.Nome)
.Distinct()
.Skip(skip)
.Take(take)
.ToList();
}
,我得到这个错误信息:
方法'Skip'仅支持LINQ to Entities中的排序输入。方法' order '必须在方法'Skip'之前调用。
但是我在查询中已经在Skip
之前调用了OrderBy
。
有人能帮帮我吗?
您应该在Distinct
之后调用OrderBy
。Distinct
将破坏集合的顺序(使OrderBy
调用无效),因此Skip
将不起作用,正如错误消息告诉您的那样。
问题解决了!
我有两个解决方案。
首先我自己在。include()之后添加了一个方法。asenumerable ()另一个是用。distinct()改变。orderby()方法的位置。
感谢社区的关注。