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

时间:2014-11-04 09:55:56

标签: .net datatable unique primary-key uppercase

我遇到以下情况:

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

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

  

这些列目前没有唯一值。

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

  

123B
  123B

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

PS:我已经看到了this questionthis 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#答案!

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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