gpt4 book ai didi

c# - C# DataTable 中 DataColumn 的约束?

转载 作者:太空狗 更新时间:2023-10-30 00:32:51 26 4
gpt4 key购买 nike

是否可以在 C# 中对 DataTable 创建值范围约束?

我正在向 DataTable 动态添加一列:

this.PrimaryCorrelationMatrix.Columns.Add(sName, typeof(int));

但我希望此列中的所有值都是 [0, 10] 中的整数。我可以直接在 DataTable 上实现这样的约束吗?

我能想到的下一个最佳选择是创建一些可能值为 [0, 10] 的对象,而不是使用 typeof(int),而是使用 typeof(specialObj)。

最佳答案

执行此操作的一种方法是检查 DataTable 的 ColumnChanging 事件中的 e.ProposedValue

要对特定列进行约束,您可以使用 DataColumn 的 ExtendedProperties 集合作为检查这些约束的标志:

DataTable dt = new DataTable();
DataColumn dc = new DataColumn("Range", typeof(int));
dc.ExtendedProperties.Add("Min", 0);
dc.ExtendedProperties.Add("Max", 10);
dt.Columns.Add(dc);
dt.ColumnChanging += dt_ColumnChanging;

在 ColumnChanging 事件中,您将检查这些属性是否存在,然后使用它们:

void dt_ColumnChanging(object sender, DataColumnChangeEventArgs e) {
if (e.Column.ExtendedProperties.ContainsKey("Min") &&
e.Column.ExtendedProperties.ContainsKey("Max")) {
int min = (int)e.Column.ExtendedProperties["Min"];
int max = (int)e.Column.ExtendedProperties["Max"];
if ((int)e.ProposedValue < min) e.ProposedValue = min;
if ((int)e.ProposedValue > max) e.ProposedValue = max;
}
}

关于c# - C# DataTable 中 DataColumn 的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15278273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com