Читайте числа из txt и сортируйте их - ошибка приведения

Я хочу взять числа в текстовом файле, который имеет пробел между числами и сделать в списке сортировки. Но я получил

Невозможно привести объект типа "System.String[]" к типу "System.IConvertible". ошибка

using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Text Dosyası(*.txt)|*.txt", ValidateNames = true, Multiselect = false })
{
    if (ofd.ShowDialog()==DialogResult.OK)
    {
        string[] lines = File.ReadAllLines(ofd.FileName);
        List<Double> list = new List<Double>();

        foreach (string s in lines)
        {
            //int nmbr = 0;
            lines = s.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries);
            list.Add(Convert.ToDouble(lines));
            listfile.Items.Add((Convert.ToDouble(lines)));

        }

        list.Sort();
        foreach (Double x in list)
        {
            listBox1.Items.Add(x);
        }

2 ответа

Решение

Во-первых, вы переназначаете свой lines переменная внутри foreach утверждение, которое неверно.

Во-вторых, вы пытаетесь преобразовать массив значений вместо того, чтобы преобразовывать каждое из значений самостоятельно.

foreach (string s in lines)
{
    //int nmbr = 0;
    var numbers = s.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries);
    foreach(var number in numbers)
    {
        var convertedNumber = Convert.ToDouble(number);
        list.Add(convertedNumber);
        listfile.Items.Add(convertedNumber);
    }
 }

Чтобы упорядочить полученные значения в порядке убывания, вы можете сделать:

list = list.OrderByDescending(x => x).ToList();

Как только у вас есть отсортированный список, вы можете заполнить свой список

foreach (Double x in list)
{
    listBox1.Items.Add(x);
}

Вы могли бы сделать это так:

List<double> list =
    File
        .ReadAllLines(ofd.FileName)
        .SelectMany(line => line.Split(' '))
        .Select(double.Parse)
        .OrderBy(x => x)
        .ToList();

foreach (double x in list)
{
    listBox1.Items.Add(x);
}
Другие вопросы по тегам