简体   繁体   中英

using dynamic linq for inner join in c#

I'm trying to do "join" using Dynamic LINQ and I can not. The code that gives this error:

var dados = (from a in db.Usuario
             join b in db.Pessoa on a.PessoaID equals b.PessoaID
             join c in db.TipoPessoa on b.TipoPessoaID equals c.TipoPessoaID
             join d in db.Sexo on b.SexoID equals d.SexoID)
            .Where("(EmpresaID == " + _EmpresaID + " || EmpresaID == 0) && Apagado == \"N\"")
            .OrderBy(sidx + " " + sord)
            .Skip(pageIndex * pageSize)
            .Take(pageSize)
            .Select("new (ID = a.UsuarioID,Login = a.Login )");

However, this code here, not "join" gives no problem.

var EspecialidadeMedicaLista = (from lista in db.EspecialidadeMedica
                               .Where("(EmpresaID == " + _EmpresaID + " || EmpresaID == 0) && Apagado == \"N\"")
                               .OrderBy(sidx + " " + sord)
                               .Skip(pageIndex * pageSize)
                               .Take(pageSize)
                                select lista);

What is the secret?

Tks

我认为这可能是由于您加入的结果为null造成的,也许在最终选择之前检查null会有所帮助。

Solution:

            var dados = from a in db.Usuario
                    join b in db.Pessoa on a.PessoaID equals b.PessoaID
                    join c in db.TipoPessoa on b.TipoPessoaID equals c.TipoPessoaID
                    join d in db.Sexo on b.SexoID equals d.SexoID
                    select new
                    {
                        ID = a.UsuarioID,
                        Login = a.Login,
                        Fixo = a.Fixo,
                        Nome = b.Nome,
                        EmpresaID = a.EmpresaID,
                        Apagado = a.Apagado
                    };
        dados = dados.Where("(EmpresaID == " + _EmpresaID + " || EmpresaID == 0) && Apagado == \"N\"");
        dados = dados.OrderBy(sidx + " " + sord);
        dados = dados.Skip(pageIndex * pageSize);
        dados = dados.Take(pageSize);

tks help...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM