C# 使用CSV解析器,我试图从CSV中选择多个项目。然而,它不会让我选择两个以上
正如我所说,我使用的是CSV解析器,可以在这里找到 我能够使用此命令成功运行代码C# 使用CSV解析器,我试图从CSV中选择多个项目。然而,它不会让我选择两个以上,c#,csv,parsing,C#,Csv,Parsing,正如我所说,我使用的是CSV解析器,可以在这里找到 我能够使用此命令成功运行代码 using (var stream = File.OpenRead(fileSaveLocation)) using (var reader = new StreamReader(stream)) { var data = CsvParser.ParseHeadAndTail(reader, ',', '"'); va
using (var stream = File.OpenRead(fileSaveLocation))
using (var reader = new StreamReader(stream))
{
var data = CsvParser.ParseHeadAndTail(reader, ',', '"');
var header2 = data.Item1;
var lines = data.Item2;
foreach (var line in lines.Take(5))
{
for (var i = 0; i < header2.Count; i++)
if (!string.IsNullOrEmpty(line[i]))
{
sb.Append(header2[i] + "=" + line[i]);
sb.Append(Environment.NewLine);
}
}
}
这行不通
当我尝试运行它时,它告诉我:
错误1“System.Tuple,System.Collections.Generic.IEnumerable>>”
不包含“Item3”的定义且没有扩展方法
“Item3”接受类型为的第一个参数
'System.Tuple,System.Collections.Generic.IEnumerable>>'
无法找到您是否缺少using指令或程序集
参考C:\repo\Scriptalizer\default.aspx.cs 82 37 Scriptalizer1
在我尝试运行程序之前,它会抛出一个错误。它说它无法解决第3项。我如何才能让它让我放尽可能多的列,我想
另外,是否有一种方法可以动态选择项目?假设用户可以输入忽略前3行,例如,我如何声明它们并获得正确的列 没有特别使用此CSV解析库,但听起来您需要以下内容:
using (var stream = File.OpenRead(fileSaveLocation))
{
using (var reader = new StreamReader(stream))
{
// Get the header and rows as a two-item tuple
var data = CsvParser.ParseHeadAndTail(reader, ',', '"');
// Get header and and rows into separate variables
var header2 = data.Item1;
var lines = data.Item2;
// This is where you get the rows you want
// So in this example, we'll skip the first
// 3 lines and then get the next 10 lines
var filteredLines = lines.Skip(3).Take(10);
// Iterate through the lines and do whatever you need to do
foreach (var line in filteredLines)
{
for (var i = 0; i < header2.Count; i++)
{
if (!string.IsNullOrEmpty(line[i]))
{
sb.Append(header2[i] + "=" + line[i]);
sb.Append(Environment.NewLine);
}
}
}
}
}
这就是我最后所做的工作,它起了作用
using (var stream = File.OpenRead(fileSaveLocation))
using (var reader = new StreamReader(stream))
{
var data = CsvParser.ParseHeadAndTail(reader, ',', '"');
var header2 = data.Item1;
var lines = data.Item2;
for (int i = 4; i < header2.Count; i++)
sb.Append(("\"" + header2[i] + "\"" + ","));
sb.Append(sb.ToString().TrimEnd(','));
sb.Append(Environment.NewLine);
foreach (var line in lines)
{
for (var i = 4; i < header2.Count; i++)
{
sb.Append("\"" + line[i] + "\"");
if (i != header2.Count - 1)
{
sb.Append(",");
}
}
sb.Append(Environment.NewLine);
}
}
filteredLines似乎不跳过列,而是跳过行。所以本质上,3,10告诉它从第3行开始,直到第10行,而不是整个文档。当更改for循环的“我开始”位置时,它似乎会跳过行。您是在尝试跳过行还是跳过列?跳过列,尽管使用了您的示例,我还是找到了答案!非常感谢。
using (var stream = File.OpenRead(fileSaveLocation))
using (var reader = new StreamReader(stream))
{
var data = CsvParser.ParseHeadAndTail(reader, ',', '"');
var header2 = data.Item1;
var lines = data.Item2;
for (int i = 4; i < header2.Count; i++)
sb.Append(("\"" + header2[i] + "\"" + ","));
sb.Append(sb.ToString().TrimEnd(','));
sb.Append(Environment.NewLine);
foreach (var line in lines)
{
for (var i = 4; i < header2.Count; i++)
{
sb.Append("\"" + line[i] + "\"");
if (i != header2.Count - 1)
{
sb.Append(",");
}
}
sb.Append(Environment.NewLine);
}
}