2010-07-29 8 views
5

EDIT : I had tried these two ways before -Comment convertir une liste de chaînes en doubles?

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

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

et a obtenu cette erreur:

Cannot convert type 'string' to'double'

Je lis quelque chose similiar qui convertissent ints à double ... mais je Liste des chaînes que je dois convertir à la liste des doubles et la ConvertAll() ne fonctionne pas ni la méthode d'extension Select. Est-ce que quelqu'un peut m'aider s'il vous plait.

+1

"le ConvertAll() ne fonctionne pas ni la méthode d'extension Select" - qu'est-ce qui ne va pas? Erreur de compilateur? Exception? Autre chose? Pouvez-vous fournir du code? –

+0

qui a voté pour cette question? – Nix

+0

Je recevais Erreur- Impossible de convertir le type 'chaîne' en 'double' mais la réponse de Mark fonctionne !! – Vishal

Répondre

13

La méthode de sélection devrait fonctionner si vous utilisez .NET 3.5 ou plus récent:

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

Voici quelques exemples de code:

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); 
} 

Résultat:

 
0,1 
1,5 

One Ce qu'il faut savoir, c'est quelle culture vous utilisez pour analyser les ficelles. Vous pouvez utiliser la surcharge Parse qui prend une culture et utiliser CultureInfo.InvariantCulture par exemple.

+0

Cela fonctionne merci !! – Vishal

0

Que pensez-vous de cela?

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

Vous pouvez utiliser la méthode ForEach de la Liste

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

Vous pouvez utiliser LINQ:

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

S'il vous plaît noter que double analyse syntaxique et flottant est compliqué - il suffit de penser de cette :

100,00 100,00

.

-> Différents paramètres régionaux

0

Hope this peut travailler: Liste tmpDouble = tmpString.Select (? X => (double) Convert.ToDouble (x)) ToList();