【问题标题】:StreamReader ReadLine() for CSV filesCSV 文件的 StreamReader ReadLine()
【发布时间】:2020-05-23 19:18:45
【问题描述】:

我正在尝试使用此代码创建一个列表。它在 NewCrime Convert 步骤失败。不知道如何使用流阅读器。这是我的第一次,我通常使用 SQL,所以我尝试做与在这里阅读 SQL 相同的事情。

列出MasterCrimeList;

    public List<Crime.Crime> GetList()
    {
        MasterCrimeList = new List<Crime.Crime>();

        try
        {

            string path = @"F:\\FanshaweCollegeClasses\\Winter2020\\CLAYS_FINAL_EXAM_2020\\VANHEESfinalEXAM\\SacramentocrimeJanuary2006.csv";
            if (File.Exists(path))
            {
                // Open the file to read from.
                using (StreamReader sr = File.OpenText(path))
                {
                    string s;
                    while ((s = sr.ReadLine()) != null)
                    {

                        Crime.Crime NewCrime = new Crime.Crime(Convert.ToString(s[0]),//CrimeDateTime
                                              Convert.ToString(s[1]),//CrimeAddress
                                              Convert.ToInt32(Convert.ToString(s[2])),//CrimeDistrict
                                              Convert.ToString(s[3]),//CrimeBeat
                                              Convert.ToInt32(Convert.ToString(s[4])),//CrimeGrid
                                              Convert.ToString(s[5]),//CrimeDescription
                                              Convert.ToInt32(Convert.ToString(s[6])),//ncicCode
                                              decimal.Parse(Convert.ToString(s[7])),//Latitude DECIMAL
                                              decimal.Parse(Convert.ToString(s[8])));//Longitude DECIMAL

                        MasterCrimeList.Add(NewCrime);

                    }
                }
            }
        }

【问题讨论】:

  • 请检查您应该如何使用docs.microsoft.com/en-us/dotnet/api/…
  • 您正在将字符从 s 变量传递到您的字段。可能您需要使用某种分隔符拆分使用 ReadLine 加载的字符串。 String.Split 是这个任务的工具
  • 您遇到的错误是什么? ReadLine 将行作为字符串返回,您不需要每次都将其转换为字符串。此外,s[0] 和其他人只会给你一个字符。如果是csv文件,则需要从字符串中读取每个以逗号分隔的值。

标签: c# readline streamreader


【解决方案1】:

在执行s[0] 时,您只会读取整行的一个字符。您应该做的是根据使用Split() 存储值的方式拆分每一行,然后您可以将每个值作为数组访问。如果是 csv 文件:

                string s;
                while ((s = sr.ReadLine()) != null)
                {
                    string[] lineValues = s.Split(new char[]{','});
                    string firstValue = lineValues[0];
                    string secondValue = lineValues[1];
                    ...
                }

【讨论】:

  • 非常感谢!我会试试的。我在想我可能需要做这样的事情,但不知道怎么做。
  • 我试过了,它给了我一个错误,说它不能将字符串转换为字符。它在 (",") 部分用红色下划线。
  • @Geode 我明白了,这取决于您将其编译成的 .net 版本。请检查我的最新更新:s.Split(new char[]{','}); 应该适合你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2014-10-08
相关资源
最近更新 更多