none
Consultar um arquivo utilizando linq RRS feed

  • Pergunta

  • Oi Pessoal,

    Eu tenho um arquivo do tipo txt e preciso fazer uma consulta na qual deve me retonar apenas as palavras que terminam com . doc, consegui retornar as linhas, mas preciso apenas do nome do arquivo.

     

    var teste = from linha in File.ReadAllLines(openFileDialog.FileName)  where linha.Contains(".doc")

     select linha;

    Desde já agradeço

     


    • Editado De_ng terça-feira, 4 de outubro de 2011 19:21
    terça-feira, 4 de outubro de 2011 19:18

Respostas

  • Olá Andreia, é apenas fazer um select dentro do seu proprio tipo anonimo, usei como delimitador no método split o "espaço", veja este código:

    //Simulando retorno do método File.ReadAllLines
    string[] arquivo = new string[]
    {
        "bla bla bla bla Arquivo.doc bla bla bla bla",
        "bla bla bla bla Arquivo1.d bla bla bla bla",
        "bla bla bla bla Arquivo2.dc bla bla bla bla",
        "bla bla bla bla Arquivo3.doc bla bla bla bla",
        "bla bla bla bla Arquivo4.c bla bla bla bla",
        "bla bla bla bla Arquivo5.o bla bla bla bla",
        "bla bla bla bla Arquivo6.doc bla bla bla bla",
    };
    
    var teste = (from linha in arquivo
                 where linha.Contains(".doc")
                 select new
                 {
                     Linha = (from l in linha.Split(' ')
                             where l.Contains(".doc")
                             select l.Replace(".doc","")).FirstOrDefault()
                 }).ToList();
    


    Resultado:
     

    Espero ter ajudado.
    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/
    • Editado Vitor Mendes quarta-feira, 5 de outubro de 2011 14:28
    • Sugerido como Resposta Vitor Mendes quarta-feira, 5 de outubro de 2011 16:35
    • Marcado como Resposta De_ng quarta-feira, 5 de outubro de 2011 18:10
    quarta-feira, 5 de outubro de 2011 14:28

Todas as Respostas

  • Andreia crie um tipo anonimo e de um replace no .doc, veja:


    //Simulando retorno do método File.ReadAllLines
    string[] arquivo = new string[]
    {
        "Arquivo.doc",
        "Arquivo1.d",
        "Arquivo2.dc",
        "Arquivo3.doc",
        "Arquivo4.c",
        "Arquivo5.o",
        "Arquivo6.doc",
    };
    
    var teste = (from linha in arquivo
                 where linha.Contains(".doc")
                 select new
                 {
                     LinhaResultado = linha.Replace(".doc", "")
                 }).ToList();
    


    Resultado:

     
    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Editado Vitor Mendes terça-feira, 4 de outubro de 2011 20:16
    terça-feira, 4 de outubro de 2011 20:16
  • Oi Vitor,

    Obrigada, mas deu certo, digamos que as linhas do meu arquivo correspondam a:

     string[] arquivo = new string[]
     {
           "Bla Arquivo1.doc Bla Bla Bla Bla Bla",
           "Bla Bla Bla Arquivo2.doc Bla Bla Bla",
           "Bla Bla Arquivo3.doc Bla Bla Bla Bla",
           "Arquivo4.doc Bla Bla Bla Bla Bla Bla",
           "Bla Bla Bla Bla Bla Bla Arquivo5.doc",
      }; 

    E a consulta tem que retornar:

    Arquivo1
    Arquivo2
    Arquivo3
    Arquivo4
    Arquivo5 

     


    • Editado De_ng quarta-feira, 5 de outubro de 2011 18:11
    terça-feira, 4 de outubro de 2011 20:42
  • Olá Andreia, é apenas fazer um select dentro do seu proprio tipo anonimo, usei como delimitador no método split o "espaço", veja este código:

    //Simulando retorno do método File.ReadAllLines
    string[] arquivo = new string[]
    {
        "bla bla bla bla Arquivo.doc bla bla bla bla",
        "bla bla bla bla Arquivo1.d bla bla bla bla",
        "bla bla bla bla Arquivo2.dc bla bla bla bla",
        "bla bla bla bla Arquivo3.doc bla bla bla bla",
        "bla bla bla bla Arquivo4.c bla bla bla bla",
        "bla bla bla bla Arquivo5.o bla bla bla bla",
        "bla bla bla bla Arquivo6.doc bla bla bla bla",
    };
    
    var teste = (from linha in arquivo
                 where linha.Contains(".doc")
                 select new
                 {
                     Linha = (from l in linha.Split(' ')
                             where l.Contains(".doc")
                             select l.Replace(".doc","")).FirstOrDefault()
                 }).ToList();
    


    Resultado:
     

    Espero ter ajudado.
    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/
    • Editado Vitor Mendes quarta-feira, 5 de outubro de 2011 14:28
    • Sugerido como Resposta Vitor Mendes quarta-feira, 5 de outubro de 2011 16:35
    • Marcado como Resposta De_ng quarta-feira, 5 de outubro de 2011 18:10
    quarta-feira, 5 de outubro de 2011 14:28
  • Obrigada, era isso mesmo!!!
    quarta-feira, 5 de outubro de 2011 18:10