【发布时间】:2018-02-14 14:39:59
【问题描述】:
下面这个方法判断DataTable中的列是否看起来很慢。是否有任何建议可以更快地检查特定列的唯一性,也许不必创建单独的视图?
var view = new DataView(LoadedDataTable);
var distinctValues = view.ToTable(true, ColID);
if (distinctValues.Rows.Count != LoadedDataTable.Rows.Count)
Messagebox.Show("Column " + ColID + " is not unique.");
更新
需要注意的一点是,我不关心是否找到重复项,只关心列是否唯一。 IE。如果它发现重复,它可能会停止搜索。如果这有什么不同!
【问题讨论】:
-
您可以按照建议尝试 LINQ,但从您的代码来看,您可能只是在处理大量需要时间来处理的数据。 ToTable(bool, string) 也可能需要时间,这就是为什么我不建议只将视图投射到两个单列表(一个非唯一)并测试两个表本身是否相等。
-
@CDove 我很欣赏您的建议,很可能是表列的大小明智地延迟了
ToTable()。我觉得下面布莱克的回答基本上是按照你的建议做的,使用 Linq 自己处理单个列。