在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

有人能帮帮我吗?

在LINQ查询中使用顺序查询和跳过时遇到错误

您应该在Distinct之后调用OrderByDistinct将破坏集合的顺序(使OrderBy调用无效),因此Skip将不起作用,正如错误消息告诉您的那样。

问题解决了!

我有两个解决方案。

首先我自己在。include()之后添加了一个方法。asenumerable ()另一个是用。distinct()改变。orderby()方法的位置。

感谢社区的关注。