LINQ- Mesclando dois arquivos distintos e agrupando dados (VB. NET) |
Neste artigo eu vou mostrar como podemos mesclar arquivos distintos e criar um novo arquivo agrupando e organizando os dados em uma aplicação Windows Forms usando a linguagem VB .NET. |
Neste artigo vamos recordar como usar os recursos da LINQ para mesclar dados de diferentes fontes criando um novo conjunto de arquivos que organizam os dados de uma nova forma.
O cenário é o seguinte :
Temos dois arquivos texto no formato CSV, onde o delimitador é a vírgula, e onde estão armazenados os nomes de alguns alunos:
Assim, o arquivo alunos1.csv possui os seguintes dados:
Bankov, Pedro Holm, Miguel Garcia, Hugo Pinto, Cristina Noriega, Fabricio Aw, Kam Foo Beebe, Ana Toyoshima, Teodoro Guy, Wey Yuan Garcia, Debora Dorneles, Jose |
alunos1.csv |
Temos também o arquivo alunos2.csv que possui os seguintes dados:
Liu, Jinghao
Bankov, Pedro
Holm, Miguel
Garcia, Hugo
Beebe, Ana
Gilchrist, Bianca
Myrcha, Jacek
Giakoumakis, Leo
McLin, Nkenge
El Yassir, Mehdi
Costa, Amanda
|
alunos2.csv |
Nosso objetivo é ler o conteúdo desses arquivos e realizar uma consulta LINQ que mescle essas informações criando vários arquivos e organizando e agrupando as informações em ordem alfabética.
Criando o projeto no Visual Studio Community
Vamos criar uma solução usando o Visual Studio Community 2015 do tipo Windows Forms Application usando a linguagem C# com o nome Linq_Agrupar.
No formulário form1.vb da solução criada vamos usar 3 ListBox e 3 Buttons a partir da ToolBox e criar o seguinte leiaute:
Agora vamos implementar o código no formulário:
Declare no início do formulário as seguintes variáveis que são arrays de strings onde iremos armazenar os dados lidos dos arquivos .csv :
Dim nomes1() As String Dim nomes2() As String
1- Botão - Ler Nomes - Código que lê o arquivo nomes1.csv e exibe no listbox
Private Sub btnLerNomes1_Click(sender As Object, e As EventArgs) Handles btnLerNomes1.Click Dim origem As String = "c:\dados\nomes1.csv"
If File.Exists(origem) Then
|
2- Botão - Ler Nomes - Código que lê o arquivo nomes2.csv e exibe no listbox
Private Sub btnLerNomes2_Click(sender As Object, e As EventArgs) Handles btnLerNomes2.Click Dim origem As String = "c:\dados\nomes2.csv"
If File.Exists(origem) Then End Sub
|
3- Botão - Mesclar e organizar nomes - Código onde realizamos a consulta LINQ para mesclar os dados e criar arquivos com base no agrupamento feito.
Private Sub btnMesclarOrganizar_Click(sender As Object, e As EventArgs) Handles btnMesclarOrganizar.Click ' Concatena e remove nomes duplicados
Dim consultaMesclaArquivos As IEnumerable(Of String) = nomes1.Union(nomes2)
' Agrupa os nomes pela primeira letra no sobrenome
Dim consultaAgruparNomes = From nome In consultaMesclaArquivos
Let n = nome.Split(New Char() {","})
Order By n(0)
Group By chaveGrupo = n(0)(0)
Into nomeGrupo = Group
' Cria um novo arquivo para cada grupo que foi criado
' Note que os laços foreach aninhados são requeridos para acessar
' os itens individuais de cada grupo
For Each gGrupo In consultaAgruparNomes
Dim nomeArquivo As String = "..'..'..'arquivoTeste_" & gGrupo.chaveGrupo & ".txt"
Dim sw As New System.IO.StreamWriter(nomeArquivo)
lbDados.Items.Add(gGrupo.chaveGrupo)
For Each item In gGrupo.nomeGrupo
lbDados.Items.Add(" " & item.nome)
sw.WriteLine(item.nome)
Next
sw.Close()
Next
End Sub
|
O código é bem simples e esta comentado.
Executando o projeto novamente após esse ajuste teremos o seguinte resultado:
Pegue o projeto completo aqui : Linq_Agrupar.zip
Porque a palavra da cruz é loucura para os que perecem; mas para nós, que
somos salvos, é o poder de Deus.
Porque está escrito: Destruirei a sabedoria dos sábios, E aniquilarei a
inteligência dos inteligentes.
1 Coríntios 1:18,19
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
LINQ - Usando os operadores padrão de consulta - Macoratti.net