所以a搜索了这个问题的解决方案,有些人已经问过了,但我不确定他们的答案是否对我有用?我复制了这段代码并将其粘贴到我类的一个构造函数中:
var Lines = File.ReadLines("C:\Users\k20\Source\Repos\TS_Webform\TS_Webform\Forms\emails.csv").Select(a => a.Split(';'));
var CSV = from line in Lines select (line.Split(',')).ToArray(); //error on "Split"
我收到此错误消息:
"错误 CS1061 'string[]' 不包含'拆分'的定义,并且找不到接受类型为'string[]'的第一个参数的扩展方法'拆分'(您是否缺少 using 指令或程序集引用?
写入我的 csv 文件时,第一行被完全跳过,然后第 2 行及以后将有 5 个元素写成这样:example@example.com,example,15555555555,1234567890,1234567890
每次添加都是这样的。我不确定跳过的第一行将如何影响我的代码。
正如我在评论中指出的,Lines
是一个IEnumerable<string[]>
,而不是一个IEnumerable<string>
,因为你在最后调用Split(';')
。
要解决此问题,您可以使用SelectMany
,它将捕获第一个Split(';')
中的所有项目并将它们添加到Lines
列表中:
var Lines = File
.ReadLines(@"C:Usersk20SourceReposTS_WebformTS_WebformFormsemails.csv")
.SelectMany(a => a.Split(';'));
或者,如果您知道您只需要第一项,例如,从原始拆分中,那么您可以使用索引语法 ([0]
(:
var Lines = File
.ReadLines(@"C:Usersk20SourceReposTS_WebformTS_WebformFormsemails.csv")
.Select(a => a.Split(';')[0]);
此外,请考虑使用库(如文件帮助程序(来分析 CSV 文件。 如果您不确定文件的内容,Split
可能会导致一些问题。
错误是因为您之前已经在第一行调用了一次 split:
var Lines =
File
.ReadLines("C:\Users\k20\Source\Repos\TS_Webform\TS_Webform\Forms\emails.csv")
.Select(a => a.Split(';')); // <--- This is causing your problem.
所以Lines
是一个IEnumerable<string[]>
.然后,您尝试枚举每个string[]
并对其调用Split
,但string[]
没有这样的函数。
通常,这是解析 CSV 文件的一种幼稚方法。如果其中一个值包含逗号,会发生什么情况:
"比如,像这样">
在这种情况下,您最终会拆分您的价值。您知道自己的数据,因此您可以肯定地说这不会成为问题。如果这么好。如果没有,我会检查NuGet是否有可以帮助您解决此问题的现有包。
更新
根据您的意见,这可能就足够了:
var csv =
File
.ReadLines("C:\Users\k20\Source\Repos\TS_Webform\TS_Webform\Forms\emails.csv")
.Select(line => line.Split(','))
.ToArray();
在此之后,csv
将按类型string[][]
.但正如我所说,如果你怀疑你的值可能包含逗号,这是不够的。检查这些 NuGet 包之一。