如何读取文本文件向 Linq 中的 List<> 添加行

How to Read a text file add line to List<> in Linq

我有这段代码可以在文本文件 (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 来实现?

是的,你可以。

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

但如前所述,您应该改用 Csv 解析器库。

您可以使用 System.IO.File.ReadAllLines 读取整个文件,这将 return 变成 List<string>。然后你可以简单地在它上面做一个 Select,拆分 cols 和 return 结果数组。

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

foreach (var line in lines)
    Console.WriteLine($"Station {line[0]}, Substation {line[1]}");

如果你只是想摆脱foreach,为什么不使用下面的代码?

SubStations.Select(x=>x.Split(',')).ToList().ForEach(f=>Console.WriteLine("Station {0}, Substation {1}",
        f[0].ToString(), 
        f[1].ToString()))