如何读取文本文件向 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()))
我有这段代码可以在文本文件 (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()))