动态Linq C#

动态Linq C#,c#,linq,entity-framework,asp.net-mvc-4,C#,Linq,Entity Framework,Asp.net Mvc 4,我正在使用System.Linq.Dynamic使dinanmico成为我研究的对象。在下面的代码中,我尝试按Funcao进行筛选,但返回错误: 类型“ASO”中不存在属性或字段“Funcao” 如何根据我的Linq别名进行过滤 代码 问题是这一行db.ASO.ToListERP(usuarioLogado.EmpresaIDLogada).AsQueryable().Where(Where,filtro) 您的类ASO没有属性Funcao 尝试删除该行上的Where。试试这个

我正在使用
System.Linq.Dynamic
使dinanmico成为我研究的对象。在下面的代码中,我尝试按
Funcao
进行筛选,但返回错误:

类型“ASO”中不存在属性或字段“Funcao”

如何根据我的Linq别名进行过滤

代码
问题是这一行
db.ASO.ToListERP(usuarioLogado.EmpresaIDLogada).AsQueryable().Where(Where,filtro)

您的类
ASO
没有属性
Funcao

尝试删除该行上的
Where
。试试这个

        var resultado = new ResultadoListagemPadrao();
        resultado.TotalRegistros = db.ASO.Total(usuarioLogado.EmpresaIDLogada);
        var query = (from a in db.ASO.ToListERP(usuarioLogado.EmpresaIDLogada).AsQueryable()
                select new
                {
                    a.ASOID,
                    a.FuncionarioID,
                    Cliente = a.Funcionario.Cliente.Pessoa.Nome,
                    Setor = a.FuncionarioFuncao.Funcao.Setor.Descricao,
                    Funcao = a.FuncionarioFuncao.Funcao.Descricao,
                    Funcionario = a.Funcionario.Pessoa.Nome,
                    a.DtASO,
                    a.Status                         
                })
            .Where(where, filtro);
        resultado.TotalRegistrosVisualizados = query.Count();    
        resultado.Dados = query 
            .OrderBy(orderna + " " + ordenaTipo)
            .Skip(iniciarNoRegistro)
            .Take(qtdeRegistro)
            .ToArray();

        return resultado;

请以后翻译您的代码。

对于这个特定问题,我认为没有必要使用动态LINQ,常规LINQ应该可以工作。您可以将
Where
语句链接起来。
        var resultado = new ResultadoListagemPadrao();
        resultado.TotalRegistros = db.ASO.Total(usuarioLogado.EmpresaIDLogada);
        var query = (from a in db.ASO.ToListERP(usuarioLogado.EmpresaIDLogada).AsQueryable()
                select new
                {
                    a.ASOID,
                    a.FuncionarioID,
                    Cliente = a.Funcionario.Cliente.Pessoa.Nome,
                    Setor = a.FuncionarioFuncao.Funcao.Setor.Descricao,
                    Funcao = a.FuncionarioFuncao.Funcao.Descricao,
                    Funcionario = a.Funcionario.Pessoa.Nome,
                    a.DtASO,
                    a.Status                         
                })
            .Where(where, filtro);
        resultado.TotalRegistrosVisualizados = query.Count();    
        resultado.Dados = query 
            .OrderBy(orderna + " " + ordenaTipo)
            .Skip(iniciarNoRegistro)
            .Take(qtdeRegistro)
            .ToArray();

        return resultado;