【发布时间】:2012-06-20 10:23:44
【问题描述】:
我正在实现一个“协调”库,它允许在不同的数据对象之间执行差异。作为实现的一部分,我将要比较的对象(主要是 CSV 文件)转换为数据表,并执行特定的比较步骤,最后一个是比较行中的实际值。
为了进行行比较,我使用以下代码:
var rowsMissingInTrgt = rowsInTrgt.Except(rowsInSrc, DataRowComparer.Default);
var rowsMissingInSrc = rowsInSrc.Except(rowsInTrgt, DataRowComparer.Default);
return rowsMissingInSrc.Count() > 0 ? false :
rowsMissingInTrgt.Count() > 0 ? false :
true;
我想实现一个自定义的 DataRowComparer,而不是使用默认的 DataRowComparer,但希望所有比较并行发生,因为这些任务彼此独立,并且最后提供了执行逻辑与或逻辑或的可选性关于比较任务。
问题:
实现“
IEqualityComparer<TRow>where TRow : DataRow”是否足以调用行的并行比较?对于logical_AND,我认为,在第一个“false”上中止其余比较是有意义的。这个可以吗?
对于logical_OR,我需要线程上类似于wait_All 的东西。如何实现?
【问题讨论】:
-
您到底想并行运行什么?每个
Except()是否应该并行化(正如您对使用自定义DataRowComparer的建议所表明的那样)?还是您想并行运行此方法的多次调用(正如您提到使用 or 和 and 所表明的那样)? -
我希望并行比较各个行。此方法的调用类型{logical_AND 或logical_OR} 将决定并行比较的行为。
标签: .net c#-4.0 linq-to-objects task-parallel-library parallel-extensions