У меня проблема с 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