Linq: sapere gli indici degli elementi differenti in 2 liste

Discussioni inerenti a C# e agli altri linguaggi .NET.

Linq: sapere gli indici degli elementi differenti in 2 liste

Messaggioda Boggio » gio feb 24, 2011 11:48 am

Ciao a tutti,

vorrei sapere se date due List<int> (e aventi la stessa dimensione) è possibile tramite LINQ creare una lista contente gli indici degli elementi che differiscono tra loro.

Esempio (banale):

data:

// INDICI _________________ 0_1_2_3__4_5_6__7 _8 _9
List<int> n1 = new List<int>(){ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<int> n2 = new List<int>(){ 0, 1, 3, 3, 4, 5, 6, 8, 8, 9};

la query LINQ deve restituirmi una nuova lista contenente gli indici degli elementi differenti, ovvero in questo caso { 2, 7 }.

Ciao e grazie
Boggio
 
Messaggi: 4
Iscritto il: gio feb 24, 2011 11:32 am

Re: Linq: sapere gli indici degli elementi differenti in 2 l

Messaggioda Cantelmo Software » mer mar 02, 2011 11:07 am

var diff = n1.Except(n2);
Cantelmo Marcello
President & CEO
"Cantelmo Software" del Geom. Marcello Cantelmo
http://www.cantelmosoftware.com
Avatar utente
Cantelmo Software
 
Messaggi: 8
Iscritto il: lun gen 14, 2008 1:48 pm
Località: Lizzanello (LE) - Italy

Re: Linq: sapere gli indici degli elementi differenti in 2 l

Messaggioda Boggio » mer mar 09, 2011 3:46 pm

mmm....

Except<..> : Produce la differenza insiemistica di due sequenze utilizzando l'operatore di confronto eguaglianze predefinito per confrontare i valori.


che non è quello di cui avevo bisogno...

grazie comunque per l'aiuto!
Boggio
 
Messaggi: 4
Iscritto il: gio feb 24, 2011 11:32 am

Re: Linq: sapere gli indici degli elementi differenti in 2 l

Messaggioda Sergio79 » mer mar 09, 2011 8:02 pm

Per ottenere gli indici puoi prendere spunto da qui, dovrebbe esserti d'aiuto per farti trovare la strada giusta:
Codice: Seleziona tutto
List<int> values = new List<int> { 3, 1, 0, 5 };
            int index =
                values.Select((n, i) => new { Value = n, Index = i }).
                OrderBy(n => n.Value).First().Index;
Sergio79
Sergio79
 
Messaggi: 1347
Iscritto il: dom gen 13, 2008 12:52 pm

Re: Linq: sapere gli indici degli elementi differenti in 2 l

Messaggioda Boggio » gio mar 10, 2011 8:35 am

Ciao Sergio,

in effetti avevo già tentato questa strada ed è stato proprio in quel momento che mi sono posto il problema senza trovare una possibile soluzione.
Al momento ho optato per una ridondanza di dati in cui riporto nella struttura dati anche l'Index assegnato al momento dell'inserimento nella lista (essendo una lista con ordine imposto e non riordinabile).
Così una volta effettuato il filtraggio ricavo l'indice direttamente dagli item...

Grazie a tutti
ciao
Boggio
 
Messaggi: 4
Iscritto il: gio feb 24, 2011 11:32 am


Torna a Il linguaggio C#

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron