none
LINQ to DataSet Group By e Count RRS feed

  • Pergunta

  • Olá Galera,

    Estou com um pequeno probleminha ao utilizar o LINQ no VB.NET... segue abaixo o cenario que estou tentando reproduzir:

    Eu tenho um metodo que recebe como parametro um DataTable. Neste metodo, eu utilizo o LINQ para gerar um novo DataTable agrupando pelo Cod e Fazendo um Count.

    EX:

    DataTable Original:

    COD      |        Desc         |      Medida          |     n colunas

    1                    XPTO                  1                              Z

    2                     XPT                   2                              A

    3                      KYZ                   5                             X

    4                   XPTO                   3                               C

    O meu novo DataTable devera conter o seguinte:

    Desc        |       Total

    XPTO                 2

    XPT                   1

    KYZ                   1 

    Bom até ai tudo bem... consegui montar a query no C# e funcionou q é uma beleza. O problema é que devido ao projeto no qual estou trabalhando estar em VB.NET, tive que fazer uma conversão. Aí começou o meu problema, por parece que a estrutura da query não é a mesma para VB.

    É a primeira vez que trabalho com LINQ e se estiver falando alguma bobagem, por favor me corrijam.

    Voces poderiam me ajudar a montar essa query pra VB?

    Segue o codigo em C#

    var

     

    query = from tbl

     

    in dtOrigem.AsEnumerable()

     

    group tbl

     

    by tbl.Field<string>("Cod")

     

    into tblTemp

     

    select new { Desc = tblTemp.Key, Total = tblTemp.Count() };

    quarta-feira, 31 de março de 2010 19:39

Respostas

  • Daniel,

    Dê uma olhada neste exemplo de grouping com linq e VB.Net e veja se te ajuda:

    http://msdn.microsoft.com/en-us/vbasic/bb737908.aspx


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta Daniel T Torres quinta-feira, 1 de abril de 2010 12:41
    quinta-feira, 1 de abril de 2010 01:34
    Moderador
  • Olá Daniel torres, acho que era mais ou menos isso que vc queria.

    Para reproduzir o teu "cenário" criei uma table e adicionei duas colunas:

    create table Teste
    (
    	Codigo int identity(1,1),
    	Nome varchar(30),
    	Primary key (Codigo)
    )
    
    insert Teste values ('XPTO')
    insert Teste values ('XPTO')
    insert Teste values ('XPTO')
    insert Teste values ('XPT')
    insert Teste values ('KYZ')
    

    Com isso fiz o que precisas, acho que era isso.

    from t in Testes
    group t by t.Nome into Gr
    select new { Gr.Key, Qtde = Gr.Key.Count() }

     


     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    sábado, 3 de abril de 2010 18:22

Todas as Respostas

  • Daniel,

    Dê uma olhada neste exemplo de grouping com linq e VB.Net e veja se te ajuda:

    http://msdn.microsoft.com/en-us/vbasic/bb737908.aspx


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta Daniel T Torres quinta-feira, 1 de abril de 2010 12:41
    quinta-feira, 1 de abril de 2010 01:34
    Moderador
  • Olá Daniel torres, acho que era mais ou menos isso que vc queria.

    Para reproduzir o teu "cenário" criei uma table e adicionei duas colunas:

    create table Teste
    (
    	Codigo int identity(1,1),
    	Nome varchar(30),
    	Primary key (Codigo)
    )
    
    insert Teste values ('XPTO')
    insert Teste values ('XPTO')
    insert Teste values ('XPTO')
    insert Teste values ('XPT')
    insert Teste values ('KYZ')
    

    Com isso fiz o que precisas, acho que era isso.

    from t in Testes
    group t by t.Nome into Gr
    select new { Gr.Key, Qtde = Gr.Key.Count() }

     


     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    sábado, 3 de abril de 2010 18:22
  • Obrigado Andre e Iter... de fato eu consegui fazer  seguindo os exemplos de vb e a solução ficou igual a que o Iter passou...

     

    Valeu!

    domingo, 4 de abril de 2010 00:36
  • Legal Daniel, fico feliz.

    Abraço!

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    domingo, 4 de abril de 2010 02:39