【发布时间】:2022-01-13 15:56:28
【问题描述】:
我希望将 csv 文件的内容放入字典中:
public IDictionary<string, string> allContracts = new Dictionary<string, string>();
我想知道如何做到这一点,因为我试图找到使用 csv 解析器的方法,但找不到有效的方法。我希望代码在其中运行:
public void CheckAvailability()
{
//this runs following a click even in a different section of my code
}
以下是我要处理的 csv 文件中的一些示例数据:
Vehicle ID,Customer ID,Booked Date,Booked_date_week_number,Number of Days Booked,BookingStatus
135,CU1,1-Jul-19,27,0,Booked
71,CU2,1-Jul-19,27,0,Booked
73,CU3,1-Jul-19,27,0,Booked
93,CU4,1-Jul-19,27,0,Booked
137,CU5,1-Jul-19,27,0,Booked
24,CU6,1-Jul-19,27,0,Booked
如您所见,列名也包含在 csv 文件中,这不是问题,实际上是我正在创建的程序的基础。
另外请注意,我认为我需要使用 csv 解析器,因为正在使用的文件比这里显示的要大,所以我不想遇到内存问题。
【问题讨论】:
-
您需要在字典中准确包含 what 您想要的内容。您想使用哪个字段作为键?你想用哪个(s)作为价值?
-
一般来说,CSV 数据可能比您的样本更复杂。例如,如果 CSV 的单元格包含逗号,则必须引用该单元格。如果您在引用的单元格中有引号,则必须通过加倍来转义该引号。示例:“John”“Smitty”“Smith, Jr”。出于这个原因,我建议使用库来解析您的数据,例如流行的 CsvHelper。使用网站上的优秀示例非常简单。
-
一些事情。 1)CSV文件的大小与使用CSV解析器无关,更多与文件实际有多大以及解析后是否可以直接保存在内存中有关。如果它可以放入内存中,那么您将面临更多的复杂性。 2)为什么要使用字典,是电子表格中的列之一,预计将成为关键,直接查找性能至关重要。
-
@EricJ。我将查看 CsvHelper 并使用库。感谢您抽出宝贵时间发表评论
-
推荐使用 CSV 解析器。目前尚不清楚您为什么需要
Dictionary<string, string>... csv 文件似乎有六 (6) 个字段。您是否有某些原因不简单地创建一个类,其中 csv 文件中的每个字段都是该类的属性?根据您选择的 CSV 阅读器,这个类可能会简化一些事情。