2010-07-29 8 views
5

EDIT : I had tried these two ways before -Wie konvertiere ich die Liste der Strings in Doppel?

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

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

und bekam diesen Fehler:

Cannot convert type 'string' to'double'

las ich über etwas similiar die ints verdoppelt konvertieren ... aber ich habe Liste von Strings, die ich Liste der Doppel konvertieren müssen und die ConvertAll() funktioniert weder mit der Erweiterungsmethode Select. Kann mir bitte jemand helfen.

+1

"die ConvertAll() funktioniert nicht, weder die Select-Erweiterung Methode" - was ist los? Compilerfehler? Ausnahme? Etwas anderes? Können Sie Code bereitstellen? –

+0

Wer hat diese Frage abgestimmt? – Nix

+0

Ich bekam Fehler- Kann Typ 'String' nicht in 'doppelt' umwandeln, aber Marks Antwort funktioniert !! – Vishal

Antwort

13

Die select-Methode sollte funktionieren, wenn Sie .NET 3.5 oder höher verwenden:

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

Hier einige Beispiel-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); 
} 

Ergebnis:

 
0,1 
1,5 

One etwas, dessen man sich bewusst ist, ist die Kultur, mit der man die Strings analysiert. Vielleicht möchten Sie die Parse Überladung verwenden, die eine Kultur braucht und zum Beispiel CultureInfo.InvariantCulture verwenden.

+0

Das funktioniert dank !! – Vishal

0

Wie wäre es damit?

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

Sie konnten die ForEach-Methode der

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

Sie können Linq verwenden:

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

Bitte beachten Sie, dass das Parsen Doppel- und Schwimmer ist kompliziert - nur daran denken :

100,00 100,00

.

-> Verschiedene Ländereinstellungen

0

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

Verwandte Themen