Usuário com melhor resposta
LINQ to DataSet Group By e Count

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() };
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
-
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.- Marcado como Resposta Daniel T Torres domingo, 4 de abril de 2010 00:34
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
-
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.- Marcado como Resposta Daniel T Torres domingo, 4 de abril de 2010 00:34
-
-