从 txt 中读取数字并对其进行排序 - 转换错误
Posted
技术标签:
【中文标题】从 txt 中读取数字并对其进行排序 - 转换错误【英文标题】:Read numbers from txt and sort them - cast error 【发布时间】:2017-11-20 16:16:44 【问题描述】:我想在数字之间有空格的 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);
【问题讨论】:
您不能将字符串列表转换为双精度。用 Select() 投影每个元素,然后转换它,用 AddRange() 添加。 你能给我更多的示例或在我的代码中编辑它 @SilasHayri - 您能否在问题中提供您的输入示例? 【参考方案1】:首先,您在 foreach
语句中重新分配了您的 lines
变量,这是不正确的。
其次,您正在尝试转换一个值数组,而不是转换每个值本身。
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 = list.OrderByDescending(x => x).ToList();
不,仍然只是在两个列表框的 txt 文件中显示数字
无法从 'System.Collections.Generic.List你可以这样做:
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);
【讨论】:
以上是关于从 txt 中读取数字并对其进行排序 - 转换错误的主要内容,如果未能解决你的问题,请参考以下文章