为什么这被认为是从string []到int []?

时间:2014-03-26 06:29:06

标签: c#

它一直在给我一个错误信息,我不明白为什么。

int[] user31 = new int[53];
        user31 = System.IO.File.ReadLines("ratings.txt").Skip(1675).Take(53).ToArray();

5 个答案:

答案 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();