迭代IEnumerable字符串数组

时间:2016-02-05 20:51:37

标签: c# linq

我正在阅读多行文字文件,其中包含以逗号分隔的值:

 string[] lines = File.ReadAllLines(path);
 IEnumerable<string[]> resultArray1 = lines.Select(x => x.Split(','));

在调试模式下,当我查看结果时,它们看起来像这样:

[0] drill down to see [0] "3.22"
                      [1] "4.00

通过以下循环,我可以打印出值,但我不确定如何在不指定[0]和[1]的情况下执行此操作,并且我不确定如何知道哪一行我正在查看该文件。到目前为止我有这个:

  foreach (string line in lines)
  {
      foreach (string[] item in resultArray1)
      {
          Console.WriteLine(item[0]);
          Console.WriteLine(item[1]);
      }
  }

你能告诉我我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

要打印string[]中的单独元素,我会使用for循环:

  foreach (string[] item in resultArray1)
  {
      for(var i = 0; i < item.length; i++)
          Console.WriteLine(item[i]);
  }

至于跟踪您所在文件的哪一行,请使用单独的变量跟踪该文件,或将foreach更改为for。以下是变量实现:

int line = 0;
foreach (string line in lines)
{
    //Code here

    line++;
}

答案 1 :(得分:1)

如果每行只包含两个值,则可以执行以下操作。

public class Data
{
    public string Property1 { set; get; }
    public string Property2 { set; get; }
}

        string[] lines = File.ReadAllLines(path);
        IEnumerable<Data> resultArray1 = lines.Select(x =>
        {
            var line = x.Split(',');
            return new Data
            {
                Property1 = line[0],
                Property2 = line[1],
            };
        });

        //And loop through the enumeration.
        foreach (var line in resultArray1)
        {
            Console.WriteLine(line.Property1);
            Console.WriteLine(line.Property2);
        }