C# 从txt中读取数字并对其排序-强制转换错误
我想在txt文件中获取数字,该文件的数字之间有空格,并在排序列表中生成。 但我得到了 无法将“System.String[]”类型的对象强制转换为“System.IConvertible”类型。错误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
使用(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);
}