【发布时间】:2020-09-10 19:25:51
【问题描述】:
我正在尝试对 CSV 文件中的列执行搜索,但我终其一生都无法找出最佳方法。我对 C# 很陌生,所以我发现的大多数东西都很复杂。
CSV文件有“id”、“title”和“rating”三栏,我想通过title栏搜索。
我发现了一个建议,我应该将 CSV 转换为一个列表,然后搜索它。
这是我目前将文件转换为列表的代码:
var reader = new StreamReader(File.OpenRead(@"books.csv"));
List<string> listA = new List<string>();
List<string> listB = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';');
listA.Add(values[0]);
listB.Add(values[1]);
foreach (var column1 in listA)
{
Console.WriteLine(column1);
}
foreach (var column2 in listA)
{
Console.WriteLine(column2);
}
}
但我不明白它是如何工作的,我得到一个错误
索引超出了数组的范围
谁能指出我正确的方向,因为我很迷茫?
【问题讨论】:
-
您可能正在寻找 'using var sr = new StreamReader(fileName);字符串内容 = sr.ReadToEnd();'反而。但是......最好的解决方案真的取决于几件事。文件有多大?您是否会在一次执行代码期间执行多次搜索(在这种情况下,将源数据缓存在内存中确实会更好)。数据将如何使用?您是否需要正在搜索的条目的所有数据(id、标题、评级)?
-
您可以使用 CsvHelper 读取文件。从那时起,我认为您可以弄清楚其余部分。
-
我正在为一个学校项目做这个,所以数据并不是很复杂。 CSV Helper 非常有用,非常感谢。