我有此代码来获取文本文件(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
读取整个文件,这将返回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]}");