【问题标题】:Give each row in a list an ID给列表中的每一行一个 ID
【发布时间】:2021-04-22 16:06:54
【问题描述】:

我正在尝试从其他文件创建一个 timetables.txt,到目前为止我已经有了这个。

static void Main(string[] args)
    {
        string Routes = @"C:\Users\peepee poopoo\gtfs\routes.txt";

        var column1 = new List<string>();
        var column2 = new List<string>();
        using (var rd = new StreamReader(Routes))
        {
            while (!rd.EndOfStream)
            {
                var splits = rd.ReadLine().Split(',');
                column1.Add(splits[0]);
                column2.Add(splits[1]);
            }
        }

        // print column1
        Console.WriteLine("Column 1:");
        foreach (var element in column1)
            Console.WriteLine(element);

        // print column2
        Console.WriteLine("Column 2:");
        foreach (var element in column2)
            Console.WriteLine(element);
    }

但是,我需要列表中每一行的第一列有一个从 1 开始计数的数字。我该怎么做?

【问题讨论】:

  • 与其创建一个字符串列表,不如创建一个包含一个 int 和一个字符串的类,并列出它们。或者您可以使用 Dictionary&lt;int,string&gt; 而不是 List
  • @Neil 我不明白
  • 你能举一个期望输出的例子吗?目前尚不清楚是否应该将 Columns 与计数器组合在一个行中,或者您实际上需要两个单独的集合,就像现在一样。
  • 所需的输出类似于:github.com/marintransit/marintransit-gtfs/blob/master/…。我可以从其他文件中获取所需的所有信息,但以编程方式进行操作很困难。
  • 不,不是。构建一个包含您需要的所有部分的类模型,作为公共属性;从输入文件中获取部分并将这些值添加到描述输出行的新类对象中。然后,您可以根据需要序列化您的 List&lt;class&gt; 对象。

标签: c# list winforms gtfs


【解决方案1】:

只要看下面写的代码并添加即可。

var dictionary = new Dictionart<string, string>();
    using (var rd = new StreamReader(Routes))
    {
        while (!rd.EndOfStream)
        {
            var splits = rd.ReadLine().Split(',');
            dictionary.Add(splits[0], splits[1]);
        }
    }

    foreach(var item in dictionary)
    {
       Console.WriteLine(item.Key + "\t" + item.Value);
    }

【讨论】:

  • dictionary.Add(splits[0], splits[1]); 处的错误:无法从字符串转换为整数
  • 更新:一直在尝试,仍然无法修复此错误。
  • 首先检查第0个索引,是不是整数值。它是整数值,然后使用代码字典进行类型转换.Add(Convert.ToInt32(splits[0]), splits[1]);
  • 这只是给Cannot convert from string to System.IFormatProvider 进行拆分[1]
  • 否则只需要修改 var dictionary = new Dictionary();
【解决方案2】:

这是有效的:

string Routes = @"C:\Users\peepee poopoo\gtfs\routes.txt";

        var dictionary = new Dictionary<string, string>();
        using (var rd = new StreamReader(Routes))
        {
            while (!rd.EndOfStream)
            {
                var splits = rd.ReadLine().Split(',');
                dictionary.Add(splits[0], splits[1]);
                //dictionary.Add(splits[0], splits[1]);
            }
        }

        foreach (var item in dictionary)
        {
            Console.WriteLine(item.Key + "\t" + item.Value);
        }

然后输出变为 this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多