SELECT NO DATASET OU DATATABLE

CAIO.FR.SP 21/01/2012 11:35:01
#393801
Galera eu carrego um dataset ou datatable comdados de um xml, e alimento um relatorio com esse dataset, gostaria de saber se tem como realizar um select no dataset ou datatable para poder filtar alguns dados.
ASHKATCHUP 21/01/2012 11:48:33
#393805
Resposta escolhida
Claro!

Tu pode utilizar LINQ. Já ouviu falar?
CAIO.FR.SP 21/01/2012 12:48:30
#393809
ASHKATCHUP, Fazer o filtro utilizando o LINQ eu ate tinha visto, e achei bem legal, mais como passar o resultado da consulta para o relatorio? tem como armazenar em um datatable ou dataset?
ASHKATCHUP 21/01/2012 12:50:50
#393810
Tem como armazenar em dataset sim, mas se não me engano tu pode passar direito.

Tu não tem um projeto para postar aqui como exemplo? Para que a gente possa te ajudar melhor..
CAIO.FR.SP 21/01/2012 15:14:31
#393812
tenho um Xml com essa estrutura:


<PingLan>
<Maquina>
<IP>192.168.1.1</IP>
<Nome> </Nome>
<Dominio> </Dominio>
<Usuario> </Usuario>
<MAC>00-21-27-D5-AD-58</MAC>
<Resposta>Success - 21/01/2012 15:07:25</Resposta>
</Maquina>
<Maquina>
<IP>192.168.1.2</IP>
<Nome> </Nome>
<Dominio> </Dominio>
<Usuario> </Usuario>
<MAC> </MAC>
<Resposta>TimedOut - 21/01/2012 15:07:25</Resposta>
</Maquina>
</PingLan>


e estou alimentando o relatorio assim:

   
private void Filtrar()
{
ReportDocument Rpt = new ReportDocument();
Rpt.Load(Application.StartupPath + [Ô]\ptRelatorio.rpt[Ô]);
if (rdbLivres.Checked == true)
{
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
where (string)xml.Element([Ô]MAC[Ô]) == string.Empty
select rst;
Rpt.SetDataSource(Result);
}
else if (rdbEmUso.Checked == true)
{
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
where (string)xml.Element([Ô]MAC[Ô]) != string.Empty
select rst;
Rpt.SetDataSource(Result);
}
else
{
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
select rst;
Rpt.SetDataSource(Result);
}
crRelatorio.ReportSource = Rpt;
}


mas não esta me devolvendo nenhum valor
ASHKATCHUP 21/01/2012 19:04:30
#393816
Chegou a testar se o LINQ está retornando valores?
CAIO.FR.SP 22/01/2012 18:26:14
#393819
ASHKATCHUP, Debugando o projeto da pra ver que o linq esta retornando valores sim. mas parece que o crystal não reconhece.
CAIO.FR.SP 22/01/2012 21:34:50
#393845
Descobri que o crystal report só aceita DataTable, DataSet, DataReader, ou Inumerable, alguém sabe como posso converter o resultado dessa query em um dos tipos aceitos pelo crystal?
ASHKATCHUP 23/01/2012 10:57:51
#393876

XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
select rst;
Rpt.SetDataSource((DataTable)Result);
Tópico encerrado , respostas não são mais permitidas