Набор данных:Enumerator и findById не возвращают одинаковые DataRow

StackOverflow https://stackoverflow.com/questions/1043060

  •  20-08-2019
  •  | 
  •  

Вопрос

Сегодняшняя проблема в моем коде довольно странная, и я пока не смог ее воспроизвести.Я работаю с типизированным набором данных (созданным с помощью дизайнера) и перебираю все строки в datatable.

Иногда (!) при поиске по первичному ключу возвращаемая строка не равна строке из перечислителя.Это некоторый код, который я написал, чтобы воспроизвести проблему:

foreach(DataSet1.DataTable1Row dr in ds.DataTable1)
{
    if(ds.DataTable1.FindById(dr.Id) != dr)
        Console.Write(dr.Id);
}

Ни одна строка не будет записана в консоль, потому что findById всегда возвращает одну и ту же строку, что действительно логично.В коде моего проекта с аналогичным набором данных с несколькими строковыми столбцами примерно в 3% строк (всегда одних и тех же строк!) этого не происходит, и одно из строковых полей просто пустое:

ds.DataTable1.FindById(dr.Id) != dr // returns false, for whatever reason

Первичный ключ - это единственное поле первичного ключа, и для этого findById является сгенерированным методом.Кто-нибудь знает небольшой намек или сталкивался с такой же проблемой раньше?Боюсь, это очень, очень особый случай, который я создал, чтобы включить эту ошибку или функцию.:)

Я подумал о возможности того, что это может быть произведено приведением, выполняемым перечислением.Перечислитель действительно работает с DataRow базовый тип сгенерированных типизированных строк.Но я не нашел там ничего плохого...

Ваше здоровье Matthias

Это было полезно?

Решение

Каков тип вашего первичного ключа?в наборе данных есть небольшая ошибка при сравнении идентификаторов Guid (и, возможно, других значений).Ошибка Guid имеет отношение только к определенным значениям Guid и обычно работает хорошо.

примечание:Когда я говорю "есть ошибка", я имею в виду, что я знаю, что сообщение об ошибке было принято, но я не знаю, было ли это исправлено

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top