DataTable не объединяет определенные пользователем объекты - PullRequest
0 голосов
/ 26 апреля 2010

У меня проблема с DataTable, обрабатывающим объект, определенный мной (Position). Объект хранит некоторые данные и перезаписывает ToString, Equals и GetHashCode. Далее он предоставляет статические операторы для == и! =.

DataTable работает нормально, пока столбец, хранящий этот объект, не является ключевым столбцом. Задать его как PrimaryKey и объединить другую таблицу с ним не удастся, поскольку содержимое не будет найдено равным (Ограничение таблицы данных и самого объекта DataTable находит данные, нарушающие ключ после слияния.)

В приложении вы найдете ручное сравнение данных после объединения.

Кто-нибудь знает, как с этим бороться?

С уважением, Тило

this.data.Rows[1][5]==this.data.Rows[0][5]
false

(Position)this.data.Rows[1][5]==(Position)this.data.Rows[0][5]
true

this.data.Rows[1][5].Equals(this.data.Rows[0][5])
true

this.data.Rows[1][5].GetHashCode()
-461267399
this.data.Rows[0][5].GetHashCode()
-461267399

this.data.Columns[5]
{PositionX}
base {System.ComponentModel.MarshalByValueComponent}: {PositionX}
AllowDBNull: false
AutoIncrement: false
AutoIncrementSeed: 0
AutoIncrementStep: 1
Caption: "PositionX"
ColumnMapping: Element
ColumnName: "PositionX"
DataType: {Name = "Position" FullName = "TiloW.Parameter.Position"}
DateTimeMode: UnspecifiedLocal
DefaultValue: {}
Expression: ""
ExtendedProperties: Count = 1
MaxLength: -1
Namespace: ""
Ordinal: 5
Prefix: ""
ReadOnly: false
Table: {}
Unique: false 

1 Ответ

0 голосов
/ 01 июня 2010

Просто для информации. Я нашел решение, добавив новый столбец, хранящий переопределенный хеш-код, который будет использоваться для слияния и внутренних вещей. Он будет удален непосредственно перед экспортом и создан во время импорта или генерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...