Ho una lista <> di una classe "region" con due variabili, "startLocation" e "endLocation". Mi piacerebbe combinare questi due in un nuovo ordinamento 2 array ordinati dove la sua giusta posizione e un intero che rappresenta se il suo inizio o una fine.C# - Usando LINQ per prendere due variabili in un array bidimensionale?
Ad esempio, se la lista ha tre oggetti regione con
[Regione 1]: StartLocation = 5, endLocation = 7
[Regione 2]: StartLocation = 3, endLocation = 5
[Regione 3]: StartLocation = 8, endLocation = 9
mi piacerebbe ottenere un ordinato matrice bidimensionale (o una lista o simile) che sembra:
[3] [1]
[5] [1]
[5] [-1]
[7] [-1]
[8] [1]
[9] [-1]
(preferibilmente vorrei le sovrapposizioni per aggiungere i secondi valori di insieme, in modo che i due distinti 5 di dell'array sarebbero combinati in [5 0] ... ma non è troppo importante)
I Attualmente sto utilizzando un forloop regolare che passa attraverso uno per uno e li aggiungo a un elenco uno alla volta. Questa implementazione è piuttosto lenta perché sto lavorando con dataset di grandi dimensioni e suppongo che ci sia un modo più elegante/più veloce per raggiungere questo obiettivo tramite LINQ.
Qualsiasi suggerimento sarebbe molto apprezzato.
sembra una buona idea. lasciami fare un tentativo e vedere se è più veloce di quello che ho ora. Grazie! – DarkAmgine
Perché non è questo .SelectMany (x => x.Split())? – mquander
Questo approccio produce (nessun gioco di parole!) Nessun vantaggio su un foreach, e in effetti introduce ulteriori overhead con i numerosi enumeratori utilizzati qui. È decisamente intelligente, ma non lo vedo più veloce o più leggibile. –