如何读取文本文件,在Linq中将行添加到List <>

问题描述 投票:0回答:2

我有此代码来获取文本文件(cvs)中的一列,我只需要前两列]

List<string> SubStations = new List<string>();

using (StreamReader leer = new StreamReader(fs, System.Text.Encoding.Default, true))
{

    string line;
    while ((line = leer.ReadLine()) != null)
    {
        SubStations.Add(line);
    }
}

foreach (var item in SubStations)
{
    string[] StationDivision = item.Split(',');
    Console.WriteLine("Station {0}, Substation {1}",
        StationDivision[0].ToString(), 
        StationDivision[1].ToString());
}

我想知道,是否可以将foreach包围的代码放入while迭代器中,而不使用list <>,并使用linq进行编译?

c# linq streamreader
2个回答
0
投票

是,可以。

Console.WriteLine(
    line.Split(',').Select(x => 
        $"Station {x[0]}, Substation {x[1]}")
    );

但是请注意,您应该改用Csv解析器库。


0
投票

您可以使用System.IO.File.ReadAllLines读取整个文件,这将返回List<string>。然后,您可以简单地对其执行Select,拆分列并返回结果数组。

        var lines = System.IO.File.ReadAllLines("file").Select(x => x.Split(',') );

        foreach (var line in lines)
            Console.WriteLine($"Station {line[0]}, Substation {line[1]}");
© www.soinside.com 2019 - 2024. All rights reserved.