0

今天我的代码中的问题有点奇怪,我还无法重现它。我正在使用一个类型化的数据集(由设计器创建),并且我正在遍历数据表中的所有行。

有时(!),当通过主键查找时,返回的行不等于来自枚举器的行。这是我为重现该问题而编写的一些代码:

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于生成的类型化行的基本类型。但是我并没有发现哪里有问题...

干杯马蒂亚斯

4

1 回答 1

2

你的主键类型是什么?DataSet 有一个用于比较 Guid(可能还有其他值)的细微错误。Guid 错误仅与某些 Guid 值有关,并且通常运行良好。

注意:当我说有错误时,我的意思是我知道错误报告已被接受,但我不知道它是否也已修复

于 2009-06-25T10:31:41.830 回答