Query di ricerca

venerdì 13 maggio 2016 - 09.01
Tag Elenco Tags  VB.NET

willy_80 Profilo | Senior Member

Ciao a tutti, ho scritto un programma in vb.net è un piccolo cadcam attualmente funziona bene il mio problema è che molto spesso devo eseguire delle ricerche nell'elenco degli elementi che compongono il mio disegno, i quali sono delle classi e l'elenco è composto da una list di queste classi, alcune volte ci sono delle funzioni che fanno molte ricerche e perdo quindi parecchio tempo vorrei snellire questi procedimenti sono quindi aperto ad ogni suggerimento.

gli elementi del mio disegno sono descritti in questo modo:

es. creazione di un nuovo elemento:
Dim NewEl As New clselemento(1, 100, 100, 200, 20)

struttura della classe:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


attualmente come dicevo tutti gli elementi sono contenuti in una list, vorrei mantenere gli elementi con la struttura della classe ma la loro gestione potrebbe anche cambiare, accetto ogni tipo di suggerimento.

il problema maggiore che ho è che in rete ho trovato suggerimenti utili per eseguire ricerche che mi permettono di ottenere gli elementi fornendo dei dati da comparare alle proprietà dell'elemento es. posso ottenere gli elementi che hanno la X1=100 il mio problema è che non ho trovato alcun suggerimento utile per fare ricerche del tipo: ottenere tutti gli elementi con 50<x1<100 e 50<Y1<100 attualmente faccio un foreach e scorro tutti gli elementi della list controllandone i valori e comparandoli coi parametri di riferimento, per questo sono disposto anche a cambiare il metodo di archiviazione dei dati purchè si possano eseguire ricerche più rapide.

babbubba Profilo | Senior Member

Io userei LINQ invece dei foreach soprattutto se gli oggetti della lista sono dello stesso tipo.
Se non fosse sufficiente e il tipo di ricerca che devi fare e grosso modo la stessa su tutti gli elementi implementerei un comparatore custom per la tua lista.
Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

willy_80 Profilo | Senior Member

Ciao ti ringrazio della tua risposta, se non chiedo troppo mi potresti fare un esempio?

ysdemarc Profilo | Expert

supponendo di avere una
IList<clselemento> lista
che sicuramente avrai riempito, ecco qualche esempio di Linq.

scrivo in c#.

elementi con X1=100:

var elementi = lista.Where(c => c.X1 == 100)

elementi 50<x1<100 e 50<Y1<100

var elementi = lista.Where(c => c.X1 > 50 && c.X1 < 100 && c.Y1 > 50 && c.Y1 < 100)
oppure anche
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

elementi è un enumerable che puoi scorrere con foreach se invece rivorresti il risultato nella tua il list ti basta usare il ToList()

willy_80 Profilo | Senior Member

grazie mille appena ho un minuto provo
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5