0
var logView = (from ag in db.ARQUIVOGED
               join aglv in db.ARQUIVOGEDLOGVIEW on ag.ID_ARQUIVO_GED equals aglv.ID_ARQUIVO_GED
               join agdown in db.ARQUIVOGEDLOGDOWNLOAD on new { X = aglv.ID_ARQUIVO_GED, Y = aglv.ID_USUARIO } equals new { X =                   join agdown.ID_ARQUIVO_GED, Y = agdown.ID_USUARIO } into lfjvd
               join epu in db.EMPRESAPORUSUARIO on aglv.ID_USUARIO equals epu.ID_USUARIO
               join emp in db.EMPRESA on epu.ID_EMPRESA equals emp.ID_EMPRESA
               join up in db.USUARIOPESSOA on aglv.ID_USUARIO equals up.ID_USUARIO
               join pes in db.PESSOA on up.ID_PESSOA equals pes.ID_PESSOA
               from lj in lfjvd.DefaultIfEmpty()
          where
               (dataVisualizacao != null ? EntityFunctions.TruncateTime(aglv.DT_VISUALIZACAO) == dataVisualizacao : true) &&
               (dataPublicacao != null ? EntityFunctions.TruncateTime(ag.DT_CRIACAO) == dataPublicacao : true) &&
               (idUsuario != null ? aglv.ID_USUARIO == idUsuario : true) &&
               (lstPreenchido != false ? lstIdsUsuariosEmpres.Contains(aglv.ID_USUARIO) : true) &&

  //THIS IS IGNORED///////////////////////////////////////////////////////////  
  --> (nomeArquivo != string.Empty ? ag.DS_ARQUIVO.Contains(nomeArquivo) : true) ////////////////////////////////////////////////////////////////                                                                    


  select new RetornoLogViewGED
  {
   NM_PESSOA = pes.NM_PESSOA,
   NU_CPF = pes.NU_CPF,
   REVENDA = emp.NM_FANTASIA,
   NOME_ARQUIVO = ag.DS_ARQUIVO,
   DT_VISUALIZACAO = aglv.DT_VISUALIZACAO,
   DT_CRIACAO = ag.DT_CRIACAO,
   DT_DOWNLOAD = lj.DT_VISUALIZACAO
  });

但是,当我在变量“nomeArquivo”中发送一个值以在基础上寻找一个术语时,他会忽略而不只是应用这个过滤器。连接顺序有问题吗?还是Where的顺序?例如变量“nomeArquivo”的值是“lion”,因为只有当这个变量的值不为空时才会执行条件(String.Empty)

有人可以帮我弄这个吗?或者经历过类似的事情?

已经很感激了!

4

0 回答 0