Filtrare dataset

martedì 28 novembre 2006 - 11.37

soffritto Profilo | Newbie

Ciao

Rispolvero un vecchio thread per un'altra curiosità, per favore:
http://dotnethell.it/forum/messages.aspx?ThreadID=11139

Nel thread in questione, cercavo un modo di accedere in modo casuale ai dati presenti in un .xml e ci son riuscito grazie al suggerimento ricevuto, riguardo la query xpath.

Ora, però, vorrei aggiungere un filtro, prima di accedere in modo casuale allo stesso file.
Vorrei filtrare il dataset, prendendo in considerazione solo i valori corrispondenti a zone=3 (è un altro valore del file news.xml) prima di recuperare in modo random il valore newsitem e quindi la news casuale.

Argh, come al solito, al momento non vedo nessuna luce.
Qualcuno sa aiutarmi, per favore, a ritrovare l'interruttore?

Molte grazie!

Buona giornata a tutti.

soffritto Profilo | Newbie

Ciao Coach , comincio a pensare tu abbia l'aureola ben in vista. Sisi!

A parte gli scherzi, come al solito suggerisci bene. Però ho un dubbio, per favore.

Come vedrai qui di seguito:
Sub Page_Load() Dim dr As DataRow dr = GetRandom(Server.MapPath("news.xml"), "newsitem") ' mostro a video tutte le colonne ed i rispettivi valori Response.Write(dr("newsid").ToString()) End Sub Function GetRandom(ByVal path As String, ByVal item As String) ' carico il file XML Dim ds As DataSet = New DataSet() ds.ReadXml(path) ' estraggo un nodo a caso tra quelli presenti Dim Rnd As Random Rnd = New Random Return ds.Tables(0).Rows(Rnd.Next(0, ds.Tables(0).Rows.Count)) End Function
Nel codice che ho utilizzato nel thread precedente, avevo utilizzato il dataset, soprattutto per la funzione GetRandom che, utilizzando la classe Random, estrapolava in maniera appunto casuale l'attributo "newsid" da cui estraevo un record conseguente.

Il problema arriva adesso. Suggerisci di usare il datatable o l'xpath, per filtrare i dati. E son riuscito a capire come applicare il consiglio (è stata dura, sono un testone!). Come posso, però, estrarre i dati casualmente, una volta filtrati con il datatable o xpath, senza usare il dataset?
Legare le due cose mi riesce difficile. Proprio mi sfugge, purtroppo.

Molte grazie per l'attenzione.
Buon lavoro

p.s. dimenticavo un "piccolo particolare": è stato, tale progetto, sviluppato in vb.net.

soffritto Profilo | Newbie

>ricordati che il dataset è composto da una collection di datable.
Mumble mumble, sto guardando il vostro tutorial su ado.net ma ammetto che, al momento, non riesco ad utilizzare come dovrei tale suggerimento. Chiedo venia.

>Se vuoi usare xpath ti fai ritornare prima il numero random e
>poi lo passi all'espressione xpath.
Questo, forse, lo comprendo.
Il problema, in tale modo, è che se ottengo il numero random prima di aver filtrato, potrà estrarre un nodo che non avrà la newsid valorizzata, estraendo un record vuoto e non visualizzerà nessuna news.

C'è qualcosa che mi sfugge, eh?

Grazie ancora

soffritto Profilo | Newbie

>cioè che il dataset è solo il contenitore di n datatable e tu
>filtri il datable non il dataset. Anche se con il framework 1.1
>devi per forza avere un dataset per leggere un file xml

Ciao

Non ho ancora risolto, sinceramente. Continuo, però, a spippolare utilizzando i preziosi suggerimenti ricevuti, quindi concentrandomi sul discorso dataset/datatable.

Vediamo un pò

EDIT: ecco, come non detto. E' bastato rimandare al load della pagina, nel caso in cui tale attributo non fosse valorizzato e puffff, magia, problema risolto.


Ti ringrazio molto!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5