Внутренний индекс DataTable поврежден

Лично именно эта ошибка была c#-language моим заклятым врагом в течение datatable трех недель в самых разных .net-framework формах. Я решил это в одной visual-c# части своей кодовой базы, и .net-framework она обнаруживается в другом c-sharp месте (кажется, я наконец c# раздавила ее сегодня вечером). Информация datatable об исключении довольно бесполезна, и c#.net способ принудительной переиндексации dotnet был бы хорошей функцией, учитывая .net отсутствие MS для решения c-sharp проблемы.

Я бы не стал искать dotnet исправление MS - у них есть c#.net статья в базе знаний, а затем c-sharp перенаправить вас на исправление dotnet ASP.Net, которое совершенно c-sharp не связано.

Хорошо, хватит c# жалоб. Давайте посмотрим, что .net-framework на самом деле помогло мне c# решить эту конкретную проблему .net-framework в различных местах, с которыми c# я сталкивался:

  • Избегайте использования представлений по умолчанию и, если возможно, изменения представления по умолчанию. Кстати, .Net 2.0 имеет ряд блокировок чтения / записи при создании представлений, поэтому они не являются той проблемой, которой они были до 2.0.
  • Вызовите AcceptChanges(), где это возможно.
  • Будьте осторожны с .Select (выражение), поскольку в этом коде нет блокировки чтения / записи - и это единственное место (по крайней мере, по мнению человека в usenet, так что относитесь к нему с недоверием - однако это очень похоже на вашу проблему - поэтому использование мьютексов может помочь)
  • Задайте AllowDBNull для рассматриваемого столбца (сомнительное значение, но сообщается в usenet - я использовал его только в тех местах, где это имеет смысл)
  • Убедитесь, что вы не устанавливаете значение null (C#) / Nothing (VB) в поле DataRow. Используйте DBNull.Value вместо null. В вашем случае вы можете проверить, не является ли поле нулевым, синтаксис выражения поддерживает оператор IsNull (val, alt_val).
  • Это, вероятно, помогло .cs-file мне больше всего (как бы .cs-file абсурдно это ни звучало): если dot-net значение не меняется, не .net-framework назначайте его. Поэтому в c# вашем случае используйте это вместо .net-framework прямого задания:

    if (column.Expression! = "какое-то .net-framework выражение") column.Expression visual-c# = "какое-то выражение";

c#-language удалил квадратные скобки, не datatable знаю, зачем они там были).

Изменить .cs-file (16.05.12): просто неоднократно .net сталкивался с этой проблемой datatable (с UltraGrid / UltraWinGrid). Использовал c-sharp совет по удалению сортировки csharp в DataView, а затем добавил visual-c# отсортированный столбец, соответствующий .net-framework сортировке DataView, и это .net-framework устранило проблему.

c#

.net

datatable

2022-10-26T18:15:33+00:00