它一直在给我一个错误信息,我不明白为什么。
int[] user31 = new int[53];
user31 = System.IO.File.ReadLines("ratings.txt").Skip(1675).Take(53).ToArray();
答案 0 :(得分:2)
因为ReadLines返回字符串,你知道。它就在文档中:
http://msdn.microsoft.com/en-us/library/dd383503(v=vs.110).aspx
你只是做“TOArray”。
如果要在执行ToArray
....
Skip(1675).Take53.Select (x=> Int.Parse(x)).ToArray()
(或沿着这条线)
你会得到一个int数组,但是在一个字符串枚举上调用ToArray会返回一个字符串数组。
答案 1 :(得分:0)
这是因为user31
是整数数组,但ReadLine
返回string[]
。
试试这样:
List<string> str =new List<string>(new string[] {"123", "234","345","456","678","678","890"});
List<int> a = str.Skip(1675).Take(53).ConvertAll(new Converter<string, int>(int.Parse));
无需自己显式解析并返回数组。 ConvertAll
将完成返回数组的工作。
修改强>
使用ConvertAll
函数包含正在运行的测试用例。
答案 2 :(得分:0)
只需查看System.IO.File.ReadLines
方法的返回类型即可。它是String[]
。
您调用Skip and Take,结果您将IEnumerable<String>
再次调用ToArray会给您String[]
而不是int[]
。
答案 3 :(得分:0)
因为文本文件的每一行都是文本。如果你能保证每一行实际上都是一个整数,你可以这样做:
int[] user31 = new int[53];
string[] lines = System.IO.File.ReadLines("ratings.txt").Skip(1675).Take(53).ToArray();
int i = 0;
foreach (var line in lines)
{
user31[i++] = Convert.ToInt32(lines[i]);
}
答案 4 :(得分:0)
ReadLines返回带有数组的字符串
我假设你的ratings.txt文件在每一行中都包含int值 你需要将字符串数组转换为int数组..
int[] user31 = new int[53];
user31= System.IO.File.ReadLines("ratings.txt").Skip(1675).Take(53).ToArray().Select(n => Convert.ToInt32(n)).ToArray();