我在这样的实体上编码了一个查询:
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
。
有人可以帮助我吗?
答案 0 :(得分:3)
您应该在OrderBy
之后致电Distinct
。 Distinct
会破坏收集的顺序(使OrderBy
调用无用),因此Skip
将无法正常工作,正如错误消息所示。
答案 1 :(得分:0)
问题解决了!
我有两个解决方案。
首先我自己在.include()之后添加一个方法.AsEnumerable() 另一个是用.distinct()改变方法.orderby()的位置。
感谢社区的关注。