私のコードの今日の問題はちょっと奇妙で、まだ再現できませんでした。型指定されたデータセット(デザイナーで作成)を使用していて、データテーブルのすべての行をループしています。
時々(!)、主キーを介して検索するときに、返される行が列挙子からの行と等しくない場合があります。これは、問題を再現するために私が書いたコードです。
foreach(DataSet1.DataTable1Row dr in ds.DataTable1)
{
if(ds.DataTable1.FindById(dr.Id) != dr)
Console.Write(dr.Id);
}
FindByIdは常に同じ行を返すため、コンソールには行が書き込まれません。これは実際には論理的です。私のプロジェクトのコードでは、いくつかの文字列列を持つ同様のデータセットで、行の約3%(常に同じ行!)ではそうではなく、文字列フィールドの1つは空です:
ds.DataTable1.FindById(dr.Id) != dr // returns false, for whatever reason
主キーは唯一の主キーフィールドであるため、FindByIdは生成されたメソッドです。誰かが少しヒントを知っているか、以前に同じ問題を経験したことがありますか?このバグや機能を有効にするのは、私が作成した非常に特殊なケースだと思います。:)
列挙によるキャストでこれが生まれる可能性を考えました。列挙子はDataRow
、生成された型付き行の基本型を処理します。しかし、私はそこで何か問題を見つけませんでした...
乾杯マティアス