Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Come eliminare elementi doppi da un array....
lunedì 28 novembre 2005 - 16.55
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Skippo
Profilo
| Newbie
4
messaggi | Data Invio:
lun 28 nov 2005 - 16:55
Salve a tutti, come risultato di una interrogazione del mio database ottengo un array con tre valori differenti ma che si ripetono molte volte, riesco facilmente (usando un gridview) a visualizzare tale elenco nella pagina, ma vorrei eliminare tutti i "doppioni", in modo da visualizzare solo i tre valori.
Esiste un oggetto "Data", vedi Gridview, DataList, DetailsView ecc... che riesce ad eliminarmi i doppioni???
Come posso fare??
Grazie.
Jumpa
Profilo
| Junior Member
176
messaggi | Data Invio:
lun 28 nov 2005 - 17:04
>Salve a tutti, come risultato di una interrogazione del mio database
>ottengo un array con tre valori differenti ma che si ripetono
>molte volte, riesco facilmente (usando un gridview) a visualizzare
>tale elenco nella pagina, ma vorrei eliminare tutti i "doppioni",
>in modo da visualizzare solo i tre valori.
>
>Esiste un oggetto "Data", vedi Gridview, DataList, DetailsView
> ecc... che riesce ad eliminarmi i doppioni???
>
>Come posso fare??
>Grazie.
prova a monte... ovvero facendo una seleziona sul db usando la clausola DISTINCT
-------------------------
Follow the White Rabbit...
http://www.jumpa.org
-------------------------
Skippo
Profilo
| Newbie
4
messaggi | Data Invio:
lun 28 nov 2005 - 17:14
Il problema è proprio questo, non posso modificare le query, sto lavorando con un WebService quindi sfrutto i suoi metodi per ottenere ciò che mi serve.
Più nel dettaglio, io faccio una richiesta per ottenere un elenco di oggetti "viaggio", tra i vari campi c'è la "destinazione", esistono viaggi con nomi differenti che però hanno delle destinazioni comuni, per questo, quando poi io chiedo di avere un array con solo le destinazioni, ottengo valori ripetuti.
Non c'è modo di far eliminare i "doppioni" con qualche proprietà dei Gridview o strutture dati simili???
Grazie per la risposta.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
mar 29 nov 2005 - 00:06
ciao,
se lavori con array ti conviene usare il metodo "sort" dell'array e controllare 1 elemento con il successivo se non sono uguali:
public static void noDoppi(ArrayList pArr)
{
pArr.Sort();
for (int zI = 0; zI < pArr.Count - 1; zI++)
{
if ((string)pArr[zI] == (string)pArr[zI + 1])
{
pArr.RemoveAt(zI);
zI -= 1;
}
}
}
se invece hai 1a datatable puoi lavorare con questa funzione "daiDistinct" che usavo io che ti fa la distinct righe per 1 campo:
#region SelectDistinct
public static DataTable daiDistinct(DataTable pTabella, string pNomeCampo)
{
return daiDistinct(pTabella,pNomeCampo,"");
}
public static DataTable daiDistinct(DataTable pTabella, string pNomeCampo,string pFiltro)
{
DataTable zDt = new DataTable("tbl");
zDt.Columns.Add(pNomeCampo, pTabella.Columns[pNomeCampo].DataType);
object LastValue = null;
foreach (DataRow zDr in pTabella.Select(pFiltro, pNomeCampo))
{
if (LastValue == null || !(ColumnEqual(LastValue, zDr[pNomeCampo])))
{
LastValue = zDr[pNomeCampo];
zDt.Rows.Add(new object[] { LastValue });
}
}
return zDt;
}
static bool ColumnEqual(object A, object B)
{
if (A == DBNull.Value && B == DBNull.Value)
return true;
if (A == DBNull.Value || B == DBNull.Value)
return false;
return (A.Equals(B));
}
#endregion
sfruttando il metodo "select" della tabella e controllando che la cella non sia vuota o uguale all'altra, poi ti fai dare indietro 1a datatable che puoi bindare dove ti serve...
io le usavo ste funzioni, dovrebbero funzionare, prova a darci 1occhiata...
ps: se usi xml puoi appoggiarti a xpath come spiegano qui:
http://aspalliance.com/34
ciao
Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo
Torna su
Stanze Forum
Elenco Threads
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 !