我可以DataTable
在 C# 中有一个聚集键吗?
我的代码中要求限制 3 列的可能组合是唯一的.....
您真正需要的是对您的DataTable
. 群集键是 SQL Server 的磁盘功能,不适用于DataTable
.
UniqueConstraint 对象可以分配给单个列或 DataTable 中的列数组,以确保指定列中的所有数据每行都是唯一的。您可以使用 UniqueConstraint 构造函数为列或列数组创建唯一约束。
所以尝试这样的事情:
// this is your DataTable
DataTable custTable ;
// create a UniqueConstraint instance and set its columns that should make up
// that uniqueness constraint - in your case, that would be a set of *three*
// columns, obviously! Adapt to your needs!
UniqueConstraint custUnique =
new UniqueConstraint(new DataColumn[] { custTable.Columns["CustomerID"],
custTable.Columns["CompanyName"] });
// add unique constraint to the list of constraints for your DataTable
custTable.Constraints.Add(custUnique);
这应该对你有用!
要使您的列强制执行 UNIQUE 约束,您可以使用
DataTable dt = new DataTable();
dt.Columns.Add("UniqueColumn");
dt.Columns["UniqueColumn"].Unique = true;
解决方案二
如果您希望某些列中的值组合具有唯一值,您可以试试这个。
DataTable dt = new DataTable();
dt.Columns.Add("UniqueColumn1");
dt.Columns.Add("UniqueColumn2");
dt.Columns.Add("UniqueColumn3");
dt.Columns.Add("NormalColumn");
string
value1 = string.Empty,
value2 = string.Empty,
value3 = string.Empty,
value4 = string.Empty;
//Logic to take values in string values variables goes here
DataRow[] founded = dt.Select("UniqueColumn1 = '"+ value1+
"' and UniqueColumn2 = '"+value2+
"' and UniqueColumn3 = '"+value3+"'");
if (founded.Length > 0)
// Message to say values already exist.
else
// Add a new row to your dt.
在此代码中,您检查 DT 中存在的数据以强制执行唯一性