我有一个带有一些数字的.txt文件
File:
1
2
3
4
我希望有一个方法可以读取这些数字并将它们添加到列表或数组中,然后将其显示在消息框中。
我现在有这个:
public void LaadVrijeKamers()
{
int KamerNummers = Convert.ToInt32(File.ReadAllText(@"x\Vrijekamers.txt"));
MessageBox.Show(Convert.ToString(KamerNummers));
}
我在荷兰语中收到错误,其中包含以下内容:
Can not read the characters
我认为File.ReadAllText仅适用于Strings,但我不确定。也许我转错了。
答案 0 :(得分:5)
尝试逐行阅读并将字符串转换为整数:
var numbers = File.ReadLines(@"C:\path\numbers.txt").Select(int.Parse).ToList();
答案 1 :(得分:2)
File.ReadAllLines()返回一个字符串数组。 Convert.ToInt32只需一个字符串。
您需要遍历文件中的每个字符串并一次转换一个。
答案 2 :(得分:2)
File.ReadAllText
失败,因为它返回所有不可转换为整数的文本。您应该尝试以下内容:
int intList = File.ReadAllLines()
-- get only lines with numbers
.Where(l => {
int val;
bool isOk = int.TryParse(l, out value);
return isOk;
}
-- actual conversion
.Select(l => Convert.ToInt32(l)
.ToList();
答案 3 :(得分:1)
嗯,你可以在这里使用LINQ方法的组合:
public void LaadVrijeKamers()
{
var KamerNummers = File.ReadAllLines(@"x\Vrijekamers.txt")
.Skip(1) //Skips file header (if needed)
.Select(Int32.Parse) //Converts to int
.ToList(); //Returns List
// To display numbers we'd first have to create a string from our list
MessageBox.Show(string.Concat(KamerNummers.Select(n => n.ToString() + ", ")));
}
答案 4 :(得分:1)
没有Linq查询
public static void MethodSort(int[] array)
{
foreach (int i in array)
{
Console.Write(" {0}", i);
}
}