检查DataTable列的唯一性

时间:2018-02-14 14:39:59

标签: c# datatable

以下方法确定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.");

更新

可能需要注意的一件事是,我不关心找到重复项,只是列是否唯一。即如果发现重复,它可能会停止搜索。如果这有任何区别!

1 个答案:

答案 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;