Attualmente ho la seguente sintassi (la lista è una lista che contiene oggetti con molte proprietà diverse (dove Title è uno di loro):Trova elemento in ObservableCollection senza utilizzare un ciclo
for (int i=0; i < list.Count; i++)
{
if(title == list[i].Title)
{
//do something
}
}
Come posso accedere al list[i].Title
senza dover ricorrere a tutta la mia collezione? Dal momento che la mia lista tende a ingrandirsi, questo può influire sulle prestazioni del mio programma
Ho una sintassi molto simile sul mio programma (accesso alle proprietà pubbliche tramite un ciclo for e indice) Ma è certo che ci debba essere un modo migliore ed elegante per farlo?
Il metodo find sembra essere un'opzione poiché il mio elenco contiene oggetti.
Cerca LINQ su oggetti. – Phil
È possibile utilizzare linq, ad esempio [Trova] (http://msdn.microsoft.com/en-us/library/x0b5b5bc.aspx) oppure è possibile implementare il proprio dizionario con il supporto per [INotifyCollectionChanged] (http: // msdn .microsoft.com/it-it/library/system.collections.specialized.inotifycollectionchanged.aspx) – dowhilefor
Un dizionario ha una ricerca molto veloce sulla chiave ma la chiave deve essere unica. Dal momento che il titolo non è unico, è necessario un ciclo. Ottimizza la classe per essere sicuro che il titolo ottenga; non è sciatto Se l'oggetto ha una chiave primaria interna, allora sostituisci GetHashCode con la chiave. – Paparazzi