以下方法确定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.");
更新
可能需要注意的一件事是,我不关心找到重复项,只是列是否唯一。即如果发现重复,它可能会停止搜索。如果这有任何区别!
答案 0 :(得分:3)
对我来说,快速时间测试使得这个解决方案比使用表中大约15000行的DataView和ToTable快得多(大约10毫秒对1000毫秒)。
var values = LoadedDataTable.Rows.Cast<DataRow>()
.Select(r => r[ColID])
.Distinct()
.ToList();
var unique = values.Count == LoadedDataTable.Rows.Count;