在LINQ查询中使用OrderBy和Skip时遇到错误

时间:2014-07-09 13:59:17

标签: c# linq

我在这样的实体上编码了一个查询:

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中的排序输入。必须在方法'Skip'之前调用'OrderBy'方法。

但我在查询中OrderBy之前已经调用了Skip

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

您应该在OrderBy之后致电DistinctDistinct会破坏收集的顺序(使OrderBy调用无用),因此Skip将无法正常工作,正如错误消息所示。

答案 1 :(得分:0)

问题解决了!

我有两个解决方案。

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

感谢社区的关注。