Сегодняшняя проблема в моем коде довольно странная, и я пока не могу ее воспроизвести. Я работаю с типизированным набором данных (созданным с помощью дизайнера) и зацикливаюсь на всех строках таблицы данных.
Иногда (!) При поиске по первичному ключу возвращаемая строка не совпадает со строкой из перечислителя. Вот код, который я написал, чтобы воспроизвести проблему:
foreach(DataSet1.DataTable1Row dr in ds.DataTable1)
{
if(ds.DataTable1.FindById(dr.Id) != dr)
Console.Write(dr.Id);
}
Никакая строка не будет записана в консоль, потому что FindById всегда возвращает одну и ту же строку, что действительно логично. В коде моего проекта с аналогичным набором данных с несколькими столбцами String примерно в 3% строк (всегда одинаковые строки!) Это не так, и одно из полей String просто пустое:
ds.DataTable1.FindById(dr.Id) != dr // returns false, for whatever reason
Первичный ключ является единственным полем первичного ключа, и поэтому FindById является сгенерированным методом. Кто-нибудь знает небольшой намек или испытывал ту же проблему раньше? Боюсь, это очень особый случай, который я сделал, чтобы включить эту ошибку или функцию. :)
Я думал о том, что это может быть произведено актерским составом, сделанным перечислением. Перечислитель работает с базовым типом DataRow
сгенерированных типизированных строк. Но я не нашел там ничего плохого ...
Приветствие
Matthias