none
Selecionar arquivos com Linq RRS feed

  • Pergunta

  • Bom dia

    Estou precisando fazer um filtro em arquivos usando linq.

    No meu diretório tenho arquivos com vários nomes, porém, preciso pegar os arquivos que contenham um valor no inicio no fim e na extensão informada. Não estou conseguindo adicionar estas condições; vejam o código:

    string ConstInicial = "MAT"; //deve iniciar por string ConstFinal = "_xpto"; //deve finalizar por string Extensao = "jpg"; //deve ter esta extensão string Diretorio = @"C:\TEMP\FOTOS"; //caminho

    DirectoryInfo dirInfo = new DirectoryInfo(Diretorio); var Arquivos = from arquivo in dirInfo.EnumerateFiles() //MINHA DÚVIDA - FILTRO PARA CONSTANTE INICIAL, CONSTANTE FINAL E EXTENSÃO select arquivo;

    O retorno baseado em arquivos existentes:

    MAT1235_xpto.jpg //sim
    MAT678_xpto.jpg //sim
    MAT55523_xpto.jpg //sim

    MAT2342_xxx.jpg //não, constante final não é igual
    23423_x.jpg //não, sem constante inicial e constante final não é igual
    MAT23423_xpto.png //não, extensão diferente
    Mat2344_xpto.jpg //não, constante inicial é diferente

    Por favor desde já agradeço a ajuda!


    Eduardo Heitor


    sexta-feira, 19 de agosto de 2016 13:36

Respostas

  • Olá Eduardo,

    Você pode fazer assim:

    DirectoryInfo dirInfo = new DirectoryInfo(Diretorio);
    var Arquivos = from arquivo in dirInfo.EnumerateFiles()
                   where arquivo.Name.StartsWith(ConstInicial) && arquivo.Name.Substring(0, arquivo.Name.Length - 4).EndsWith(ConstFinal) && arquivo.Extension.Contains(Extensao)
                   select arquivo;

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 19 de agosto de 2016 14:09

Todas as Respostas

  • Olá Eduardo,

    Você pode fazer assim:

    DirectoryInfo dirInfo = new DirectoryInfo(Diretorio);
    var Arquivos = from arquivo in dirInfo.EnumerateFiles()
                   where arquivo.Name.StartsWith(ConstInicial) && arquivo.Name.Substring(0, arquivo.Name.Length - 4).EndsWith(ConstFinal) && arquivo.Extension.Contains(Extensao)
                   select arquivo;

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 19 de agosto de 2016 14:09
  • Olá Eduardo,

    Você pode fazer assim:

    DirectoryInfo dirInfo = new DirectoryInfo(Diretorio);
    var Arquivos = from arquivo in dirInfo.EnumerateFiles()
                   where arquivo.Name.StartsWith(ConstInicial) && arquivo.Name.Substring(0, arquivo.Name.Length - 4).EndsWith(ConstFinal) && arquivo.Extension.Contains(Extensao)
                   select arquivo;

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    Obrigado André

    Funcionou perfeitamente!!!!



    Eduardo Heitor

    sexta-feira, 19 de agosto de 2016 16:07