2010-07-29 13 views
5

EDIT : I had tried these two ways before -Come convertire l'elenco di stringhe in doppio?

List<double> doubleList = 
stringList.ConvertAll(x => (double)x); 

List<double> doubleList = 
stringList.Select(x => 
(double)x).ToList(); 

e ottenuto questo errore:

Cannot convert type 'string' to'double'

ho letto qualcosa similiar che converte interi a doppie ... ma ho elenco di stringhe che ho bisogno di convertire nella lista doppi e la ConvertAll() non funziona né il metodo Seleziona estensione. Per favore qualcuno può aiutarmi.

+1

"il ConvertAll() non funziona né il metodo di estensione Select" - cosa c'è che non va? Errore del compilatore? Eccezione? Qualcos'altro? Puoi fornire il codice? –

+0

chi ha votato questa domanda? – Nix

+0

Stavo ricevendo errore- Impossibile convertire il tipo 'stringa' in 'doppio' ma la risposta di Mark funziona !! – Vishal

risposta

13

Il metodo di selezione dovrebbe funzionare se si utilizza .NET 3.5 o più recente:

List<double> result = l.Select(x => double.Parse(x)).ToList(); 

Ecco qualche esempio di codice:

List<string> l = new List<string> { (0.1).ToString(), (1.5).ToString() }; 
List<double> result = l.Select(x => double.Parse(x)).ToList(); 
foreach (double x in result) 
{ 
    Console.WriteLine(x); 
} 

Risultato:

 
0,1 
1,5 

One cosa di cui essere consapevoli è quale cultura si sta utilizzando per analizzare le stringhe. Si potrebbe voler utilizzare il sovraccarico Parse che accetta una coltura e utilizzare CultureInfo.InvariantCulture ad esempio.

+0

Funziona grazie !! – Vishal

0

Che ne dici di questo?

List<string> list = [your strings] 
List<double> newList = new List<double>(); 
for(int i = 0; i < list.Count; i++) 
{ 
    double d = 0; 
    if(!double.TryParse(list[i], d)) //Error 
    newList.Add(d); 
} 
1

Si potrebbe utilizzare il metodo ForEach della Lista

List<double> dbl= new List<double>; 
stringList.ForEach(str=> dbl.Add(double.parse(str))); 
3

È possibile utilizzare LINQ:

List<double> myList = myStringlist.ConvertAll(item => double.Parse(item)); 

Si prega di essere consapevole del fatto che il parsing doppie e galleggiante è complicato - basti pensare questo :

100,00 100,00

.

-> impostazioni diverse impostazioni internazionali

0

Spero che questo può funzionare: Lista tmpDouble = tmpString.Select (? X => (doppia) Convert.ToDouble (x)) ToList();

Problemi correlati