РЕДАКТИРОВАНИЕ: Я попробовал эти два пути прежде -
List
doubleList = stringList.ConvertAll(x => (double)x); List doubleList = stringList.Select(x => (double)x).ToList(); и получил эту ошибку:
Не может преобразовать тип 'строка' to'double'
Я читал о чем-то подобном, которые преобразовывают ints в, удваивается..., но у меня есть Список строк, из которых я должен преобразовать в Список, удваивается, и ConvertAll () не работает ни один Избранный дополнительный метод. Может любой выручать меня.
Метод select должен работать, если вы используете .NET 3.5 или новее:
List<double> result = l.Select(x => double.Parse(x)).ToList();
Вот пример кода:
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);
}
Результат:
0,1 1,5
Следует помнить об одном: какую культуру вы используете для синтаксического анализа строк. Возможно, вы захотите использовать перегрузку Parse
, которая принимает культуру и, например, использовать CultureInfo.InvariantCulture
.
Вы можете использовать метод ForEach списка
List<double> dbl= new List<double>;
stringList.ForEach( str=> dbl.Add( double.parse( str ) ) );
Вы можете использовать linq:
List<double> myList = myStringlist.ConvertAll(item => double.Parse(item));
Имейте в виду, что синтаксический анализ двойников и чисел с плавающей запятой - это сложно - просто подумайте:
100,00 100.00
-> Различные настройки локали
Как насчет этого?
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);
}