.net - DataTable 主键上区分大小写的字符

标签 .net datatable unique primary-key uppercase

我处于以下情况:

我必须修复设计非常糟糕应用程序中的问题。在代码中,之前的开发人员从数据库获取信息并将其放入DataTable中。然后,他在此数据表的字段上设置主键

但是,PK列是varchar类型,我有以下错误:

These columns don't currently have unique values.

这是因为在数据中,我有:

123b
123B

数据表中的这些值似乎是相同的,但它们并不完全相同。 是否有任何快速而肮脏的解决方法可以避免此问题,例如 CaseSensitive = False

PS:我已经看到this question ,和 this one ,但我想避免重新创建整个应用程序...
我知道我应该创建一个身份列并将其设置为 PK,但是存在很多附带问题,只有在找不到快速解决方案时我才会这样做。

仅供引用,数据表的构造如下:

Dim dataColumn As New DataColumn(ucStatus.CheckColumnKey, GetType(Boolean))
dataColumn.DefaultValue = False
dataColumn.AllowDBNull = False
sourceInt.Columns.Add(dataColumn)
sourceInt.Columns(dataColumn.ColumnName).SetOrdinal(0)

sourceInt.PrimaryKey = New DataColumn() {sourceInt.Columns(MyColumn)}

最后一行是一个问题,MyColumn 列包含有问题的数据。
代码是在 VB.NET 中,但 C# 答案被接受!

感谢您的帮助

最佳答案

在分配 PrimaryKey 属性之前将 DataTable 对象上的 CaseSensitive 属性设置为 true 将允许您使用将 123b 和 123B 这两个值视为唯一的 PrimaryKey。我遇到了同样的问题并回答了这个here

关于.net - DataTable 主键上区分大小写的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732190/

相关文章:

.net - 将 HttpClient 与 SSL 结合使用 - 覆盖 Credential Required 弹出窗口

.net - 用于更改变量的组合框下拉列表

javascript - 如何使数据表按标签搜索

jquery - 从 jQuery DataTables 拖动到 jQuery NestedSortable

indexing - 如何在 mongoengine 中创建一个索引为 unique=True 和 sparse=True

.net - WCF 数据契约(Contract)

c# - 通用类型不相等

jquery - 数据表行按钮单击

c# - 即使 IP 已更改或浏览器数据已被清除,我如何识别我网站上的唯一用户?

r - 如何创建一个新列,其中包含 df 中的唯一值计数(按 r 中的组)