Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Classe comparer generica e sorting di collezioni generiche (ancora, XD)
Forum - C# / VB.NET - [VB.NET] Classe comparer generica e sorting di collezioni generiche (ancora, XD) - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 22:05
Domenica, 02/01/2011
Il problema è che volevo evitare di utilizzare un secondo insieme..

Comunque per ora mi è toccato accontentarmi, e ho fatto così

Codice sorgente - presumibilmente VB.NET

  1. Sub Sort()
  2.             Dim me2 = Me.ToList
  3.             me2.Sort(New GenericComparer(Of T)(_SortingPropertyName, _OrderDirection))
  4.  
  5.             Me.Clear()
  6.  
  7.             For Each tobj As T In me2
  8.                 Me.Add(tobj)
  9.             Next
  10.  
  11.             me2.Clear()
  12.             me2 = Nothing
  13.  
  14.         End Sub



ma prima o poi... 8-) :rotfl:

:k:

PM
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 22:05
Domenica, 02/01/2011
Testo quotato

Postato originariamente da dedalux:

Gianluca, non vedo in che modo possa influire la quantità N di elementi da ordinare, se non in termini di tempo.
Comunque la collezione (che non è una lista) contiene elementi T che NON sono tipi primitivi, ma classi, e l'ordinamento di queste deve avvenire in base ad una proprietà scelta a runtime (tra quelle della classe).

Quello che mi proponi te se ho ben capito, è un'espressione Lamba, che in VB.NET, nel mio caso, sarebbe da tradurre così

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim me2 = Me.ToList.OrderBy(Function(f As T) f.Proprietà)'.ThenBy ...



e poi fare anche qui una cosa di questo genere

Codice sorgente - presumibilmente VB.NET

  1. me2.Sort(New Comparison(Of T) _
  2.                      (Function(t1 As T, t2 As T) TipoDellaProprietà.Compare(t1.Proprietà, t2.Proproetà)))
  3.  
  4.             For Each tObj As TIn me2
  5.                 Me.Move(Me.IndexOf(tObj), me2.IndexOf(tObj))
  6.             Next



ed il risultato non è diverso


dici poco... tempo = risorse...poi onestamente complicarsi la vita per il gusto di farlo non mi sembra opportuno...

PM
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 22:12
Domenica, 02/01/2011
La differenza di tempo è minima, e anche se per DB molto grandi può diventare rilevante, è impagabile la forte tipizzazione della classe che voglio creare.

Comunque non c'entra niente la grandezza del DB, che varia in base alla necessità.

Ultima modifica effettuata da dedalux il 02/01/2011 alle 22:21
PM
Pagine: [ 1 2 ] Precedente | Prossimo