C# 在c中使用动态linq进行内部连接
我正在尝试使用动态LINQ加入,但我不能。给出此错误的代码:C# 在c中使用动态linq进行内部连接,c#,linq,dynamic,C#,Linq,Dynamic,我正在尝试使用动态LINQ加入,但我不能。给出此错误的代码: 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
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 )");
但是,这里的代码,notjoin没有问题
var EspecialidadeMedicaLista = (from lista in db.EspecialidadeMedica
.Where("(EmpresaID == " + _EmpresaID + " || EmpresaID == 0) && Apagado == \"N\"")
.OrderBy(sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize)
select lista);
秘密是什么
Tks我认为这可能是因为您加入的结果为空,在最终选择之前检查空值可能会有所帮助。解决方案:
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…您得到的错误文本是什么?我认为EmpresaID字段位于多个表中,这就是代码无法识别它的原因。使用该表的对象,即c.EmpresaID.Error from VB:Error 1'int'不包含'Where'的定义和最佳扩展方法重载'System.Linq.Dynamic.DynamicQueryable.WhereSystem.Linq.IQueryable,string,params object[]'具有一些无效参数M:\C\ERP\ERP\Controllers\UsuarioController.cs 301 21 ERP错误2实例参数:无法从'int'转换为'System.Linq.IQueryable'M:\C\ERP\ERP\Controllers\UsuarioController.cs 301 21 ERP