gpt4 book ai didi

c# - 忽略没有数据的 CSV 行

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:36 24 4
gpt4 key购买 nike

令我惊讶的是,我在这里没有看到任何相关信息(或者我错过了)。解析 CSV 文件时,如果有行没有数据,应该如何处理?我说的不是空行,而是空行,例如:

ID,Name,Quantity,Price
1,Stuff,2,5
2,Things,1,2.5
,,,
,,,
,,,

我正在使用 TextFieldParser 来处理数据中的逗号、多个定界符等。我想到的两个解决方案是使用 ReadLine 而不是 ReadFields,但这会消除使用 TextFieldParser 的好处,我假设, 因为那时我必须以不同的方式处理逗号。另一种选择是遍历字段并在所有字段都为空时删除该行。这是我拥有的:

dttExcelTable = new DataTable();

using (TextFieldParser parser = new TextFieldParser(fileName))
{
parser.Delimiters = new string[] { ",", "|" };

string[] fields = parser.ReadFields();
if (fields == null)
{
return null;
}
foreach (string columnHeader in fields)
{
dttExcelTable.Columns.Add(columnHeader);
}

while (true)
{
DataRow importedRow = dttExcelTable.NewRow();
fields = parser.ReadFields();
if (fields == null)
{
break;
}
for (int i = 0; i < fields.Length; i++)
{
importedRow[i] = fields[i];
}

foreach (var field in importedRow.ItemArray)
{
if (!string.IsNullOrEmpty(field.ToString()))
{
dttExcelTable.Rows.Add(importedRow);
break;
}
}

}
}

最佳答案

在不使用第三方 CSV 阅读器的情况下,您可以通过这种方式更改代码

.....
DataRow importedRow = dttExcelTable.NewRow();
for (int i = 0; i < fields.Length; i++)
importedRow[i] = fields[i];

if(!importedRow.ItemArray.All (ia => string.IsNullOrWhiteSpace(ia.ToString())))
dttExcelTable.Rows.Add(importedRow);

使用 All IEnumerable 扩展,您可以使用 string.IsNullOrWhiteSpace 检查 ItemArray 的每个元素。如果返回为真,则您有一个空字符串数组,您可以跳过添加

关于c# - 忽略没有数据的 CSV 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31412084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com