servicestack-text,C#,Csv,servicestack Text" /> servicestack-text,C#,Csv,servicestack Text" />

C# 如何确定导致异常的csv数据?

C# 如何确定导致异常的csv数据?,c#,csv,servicestack-text,C#,Csv,servicestack Text,调试ServiceStack.csv调用中的文本字符串时遇到问题。我正在解析几个csv文档,但有一个文档不断抛出异常。我无法确定根本原因。例外情况是: “索引超出范围。必须为非负且小于集合的大小。参数名称:索引” 我理解异常的逻辑。它正在尝试使用超出范围的索引访问集合。我似乎无法从底层数据中找到根本原因 只有一个文档引发了此异常。许多其他人也不例外 这是我的密码: string columnHeaderRow = "ItemNumber`ItemName`Description\n\r"; st

调试ServiceStack.csv调用中的文本字符串时遇到问题。我正在解析几个csv文档,但有一个文档不断抛出异常。我无法确定根本原因。例外情况是:

“索引超出范围。必须为非负且小于集合的大小。参数名称:索引”

我理解异常的逻辑。它正在尝试使用超出范围的索引访问集合。我似乎无法从底层数据中找到根本原因

只有一个文档引发了此异常。许多其他人也不例外

这是我的密码:

string columnHeaderRow = "ItemNumber`ItemName`Description\n\r";
string rawData = "my UTF8 encoded delimited data";
CsvConfig.ItemSeperatorString = "`";
string dataToParse = columnHeaderRow + rawData;
var data = dataToParse.FromCsv<Models.Ticket[]>(); // Exception thrown here
string columnHeaderRow=“ItemNumber`ItemName`Description\n\r”;
string rawData=“my UTF8编码分隔数据”;
CsvConfig.ItemSeparatorString=“`”;
字符串dataToParse=columnHeaderRow+rawData;
var data=dataToParse.FromCsv();//这里抛出异常
这是在asp.net核心应用程序中,我正在引用ServiceStack.Text.core v1.0.37


任何想法都将不胜感激!

可能不相关,但Windows行分隔符是
\r\n
,而不是像第一行那样的
\n\r
。我会尽量缩小文档的大小,直到你发现问题所在——这个过程通常是最快的。两个行分隔符都能工作。你提出的分解文件的建议帮助我找到了问题所在。最后,我不得不分别为每一行调用FromCsv来捕获导致异常的行。(一行有一个额外的分隔符)这种方法实质上是将文档分成多个单行文档。也许有更好的方法使用ServiceStack.Text,但我找不到。这种一次解析一行的方法允许我捕获并处理坏行,而不必扔掉整个文档。谢谢你的建议,他们引导我走上了正确的道路。