我想在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);
}
答案 0 :(得分:0)
首先,您要在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);
}
答案 1 :(得分:0)
你可以这样做:
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);
}