196 messaggi dal 02 agosto 2007
Ciao, ho un problema di cui non ho trovato alcunchè in giro.
Ho una lista che utilizzo per fare il binding su una datagrid di silverlight ma prima che venga visualizzata nel datagrid è necessario che la ordini alfabeticamente e secondo le parole accentate.
Cioè potrebbe capitarmi di ordinare la lista in ordine alfabetico ma in ordine contrario agli accenti (cioè: a b c d à). Spareste aiutarmi?
Ciao a tutti!
Max

Massimiliano
438 messaggi dal 04 agosto 2002
Contributi
La serie deve andare da A a Z e da à a ù?
Le accentate da considerare sono solo nelle lettere iniziali?

v
Modificato da vladimiro il 04 agosto 2008 20.45 -
196 messaggi dal 02 agosto 2007
Da un file xml io leggo se il "sortnoaccent" è impostato a true o false e mi devo comportare di conseguenza.E la serie deve essere A a Z e da à a ù.
Purtroppo, le lettere accentate possono trovarsi in qualsiasi posto all'interno della stringa.
Grazie ciao

Massimiliano
438 messaggi dal 04 agosto 2002
Contributi
per fare una cosa veloce puoi
1) estrarre dall'elenco tutte le parole con lettere accentate tramite regex, tipo:
Dim r as new Regex("[àèìòù]")
dim mc as MatchCollection =r.Matches("tuo testo")
for each mc as Match in mc
..
next

2) ordini il primo elenco senza accentate
3) ordini il secondo elenco con accentate
4) fondi i due elenchi ordinati

Se hai più tempo puoi fare le cose per bene utilizzando Linq + regex e implementato IComparer su una tua classe.

facci sapere ;)

v
196 messaggi dal 02 agosto 2007
Ti spiego meglio. Ho una lista di oggetti "persona" chiamata listaPersone che devo ordinare secondo il loro persona.cognome. Mi spegheresti meglio come dovrei crearmi l'elenco delle accentate e quella non accentata.
Grazie!!!!

Massimiliano
438 messaggi dal 04 agosto 2002
Contributi
allora, ipotizzando di avere una lista di oggetti tipo:

Public Class Persona

    Private m_Nome As String
    Private m_Cognome As String

    Public Property Nome() As String
       ...
    End Property

    Public Property Cognome() As String
      ...
    End Property


utilizzando linq puoi estrarre l'elenco dove compaiono (non solo come iniziale) le accentate nel cognome così:
Dim listAccentate = From p As Persona In lista
Where Regex.Matches(p.Cognome, "[àèìòù]").Count > 0 
Order By p.Cognome Select p


analogamente ti fai la lista delle non accentate e le fondi.
fammi sapere ;)

ciao ciao

v
196 messaggi dal 02 agosto 2007
Nel caso dell'elenco dei cognomi non accentati mica devo specificare tutte le lettere dell'alfabeto come pattern nel parametro di Regex.Matches(p.cognome, "[abcdefg...]"), credo ci sia una soluzione migliore. Speriamo di trovarla. Grazie se puoi aiutarmi nuovamente!
Ciaoooo

Massimiliano
438 messaggi dal 04 agosto 2002
Contributi
maxxasp ha scritto:
Nel caso dell'elenco dei cognomi non accentati mica devo specificare tutte le lettere dell'alfabeto come pattern nel parametro di Regex.Matches(p.cognome, "[abcdefg...]"), credo ci sia una soluzione migliore. Speriamo di trovarla. Grazie se puoi aiutarmi nuovamente!
Ciaoooo



noooo, basta che scrivi la clausola where così:
Where Regex.Matches(p.Cognome, "[àèìòù]").Count = 0


ciao ciao
v

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.