今天的我的代码的问题是那样的陌生,我无法重现它。我有一个类型化的DataSet(与设计师创建)的工作,我在循环中的所有行的数据表。

有时(!),通过主键找到时,则返回的行不等于从枚举的一个。这是一些代码,我写来重现问题:

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值做通常效果很好。

请注意:当我说有一个错误,我的意思是我知道的bug报告已被接受,但我不知道,如果它已经修复以及

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top