95 messaggi dal 04 luglio 2008
Ciao a tutti.
Volevo chiedervi delucidazioni sulla ricerca in una List.
Ho una lista che all'interno contiene diversi oggetti, dovrei trovare l'indice dell'oggetto in questione a partire dal suo id.

Ho visto che ci sono i metodi IndexOf o BinarySearch ma entrambi mi chiedono come parametro (object item), ma io ho solo l'id. Ovviamente questo discorso perchè gli oggetti nella lista sono già istanziati, invece di istanziare nuovamente un oggetto attraverso il suo id.

Come posso fare?

Grazie a tutti.
Non usi la List ma un dictionary...

Ormai programmano tutti... ma la professionalità appartiene a pochi
95 messaggi dal 04 luglio 2008
manuel0081 ha scritto:
Non usi la List ma un dictionary...


Purtroppo non posso modificare questa cosa, allo stato attuale sarebbe troppo "costoso" fare questa modifica. Era solo per non istanziare nuovamente l'oggetto visto che si trova giù in quella lista.

Grazie

Alfredo
Devi ciclare gli elementi con un foreach, fai un confronto e break.

Ormai programmano tutti... ma la professionalità appartiene a pochi
45 messaggi dal 16 ottobre 2007
Puoi usare Linq to Object e fare la sequente query:

using System.Linq;

...

<tipo_oggetto> item = <nome_instanza_lista>.Where(o => o.<proprieta_id> == <id_voluto>).SingleOrDefault();

if (item != null)
{
//fai qualcosa...
}

dimmi se ti è tutto chiaro,

ciao,

Luca
95 messaggi dal 04 luglio 2008
pinguino ha scritto:
Puoi usare Linq to Object e fare la sequente query:

using System.Linq;

...

<tipo_oggetto> item = <nome_instanza_lista>.Where(o => o.<proprieta_id> == <id_voluto>).SingleOrDefault();

if (item != null)
{
//fai qualcosa...
}

dimmi se ti è tutto chiaro,

ciao,

Luca


Ciao,
si molto chiaro, è proprio quello che mi servirebbe, ma usando il framework 2.0 non penso possa usare LINQ.
Grazie

Alfredo
esatto per usare Linq devi passare al Framework 3.5.

comunque non credere che alla fine faccia qualcosa di diverso di un ciclo...

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
11 messaggi dal 06 maggio 2007
ciao,

potresti provare con il metodo find() che viene esposto dall'oggetto list<> :


tipo_oggetto item = list_of_tipo_oggetto.Find(delegate(tipo_oggetto obj) { return obj.Id == myId; });

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.