C# 从txt中读取数字并对其排序-强制转换错误

C# 从txt中读取数字并对其排序-强制转换错误,c#,winforms,C#,Winforms,我想在txt文件中获取数字,该文件的数字之间有空格,并在排序列表中生成。 但我得到了 无法将“System.String[]”类型的对象强制转换为“System.IConvertible”类型。错误 使用(OpenFileDialog ofd=new OpenFileDialog(){Filter=“Text Dosyası(*.txt)|*.txt”,ValidateNames=true,Multiselect=false}) { if(ofd.ShowDialog()==DialogResu

我想在txt文件中获取数字,该文件的数字之间有空格,并在排序列表中生成。 但我得到了

无法将“System.String[]”类型的对象强制转换为“System.IConvertible”类型。错误

使用(OpenFileDialog ofd=new OpenFileDialog(){Filter=“Text Dosyası(*.txt)|*.txt”,ValidateNames=true,Multiselect=false})
{
if(ofd.ShowDialog()==DialogResult.OK)
{
string[]lines=File.ReadAllLines(ofd.FileName);
列表=新列表();
foreach(行中的字符串s)
{
//int nmbr=0;
lines=s.Split(新字符[]{},StringSplitOptions.RemoveEmptyEntries);
list.Add(Convert.ToDouble(行));
添加((Convert.ToDouble(行));
}
list.Sort();
foreach(列表中的双x)
{
列表框1.Items.Add(x);
}

首先,您在
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);
}
列表=
文件
.ReadAllLines(ofd.FileName)
.SelectMany(line=>line.Split(“”))
.Select(double.Parse)
.OrderBy(x=>x)
.ToList();
foreach(列表中的双x)
{
列表框1.Items.Add(x);
}

无法将字符串列表转换为双精度。请使用Select()投影每个元素,然后使用AddRange()将其转换为add.你能给我更多的样品或在我的网站上编辑吗code@SilasHayri-你能在你的问题中提供一个你的输入样本吗?非常感谢:)我想把数字按顺序排列,大的数字排在第一位,依此类推到最小的数字,但它不按顺序排列数字:(这一行怎么样?
list=list.OrderByDescending(x=>x).ToList();
否仍然只在两个ListBox上的txt文件中显示数字无法从“System.Collections.Generic.List”转换为System.Windows.Forms.ListBox.ObjectCollection
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);
}