【发布时间】:2017-04-07 20:51:20
【问题描述】:
我正在使用 PLINQ 处理一个大 (700MB+) CSV 文件。这是查询:
var q = from r in ReadRow(src).AsParallel()
where BoolParser.Parse(r[vacancyIdx])
select r[apnIdx];
如果您想知道,它会为空置属性生成 APN 列表。
我的问题是,如何在不对查询/流执行 2 次传递的情况下提取“坏记录”流?
CSV 文件中的每一行都应包含 colCount 记录。我想通过将 where 子句更改为“where r.Count == colCount && BoolParser.Parse(r[vacancyIdx])”来强制执行此操作。
但是,任何格式错误的输入都会默默消失。
我需要在错误日志中捕获任何格式错误的行,并标记 n 行输入未被处理。
目前我在 ReadRow() 函数中完成这项工作,但似乎应该有一种 plinqy 方法将数据流拆分为 2 个或多个要处理的流。
有人知道怎么做吗?如果没有,有谁知道如何将此建议添加到 PLINQ 新功能请求中? ;-)
【问题讨论】: