今天我的代码中的问题有点奇怪,我还无法重现它。我正在使用一个类型化的数据集(由设计器创建),并且我正在遍历数据表中的所有行。
有时(!),当通过主键查找时,返回的行不等于来自枚举器的行。这是我为重现该问题而编写的一些代码:
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
于生成的类型化行的基本类型。但是我并没有发现哪里有问题...
干杯马蒂亚斯