【问题标题】:the IndexOf() method returns -1 all the timeIndexOf() 方法一直返回 -1
【发布时间】:2010-08-26 08:11:08
【问题描述】:

我有两个结构相同的数据表

第一个有一行第二个

第二个有一组行

我想要的是获取第二个数据表中第一个数据表行旁边的行。

他的名字是:: temp的第一个数据表

第二个数据表他的名字是::dt

我做了以下事情:

DataTable temp = new DataTable();
temp = dt.Clone();
DataColumn[] keyColumn = new DataColumn[1];
keyColumn[0] = temp.Columns["photoId"];
temp.PrimaryKey = keyColumn;
temp = (DataTable)(Session["currentImage"]);
DataRow[] drr = new DataRow[1];

index = dt.Rows.IndexOf(temp.Rows[0]);

但索引总是带有一个值 = -1

虽然 temp.rows[0] 它的内容一直在变化

例如,当我写 dt.Rows.IndexOf(dt.Rows[1]) 时,我得到 1

但这不是我想要做的,我真正想做的是在第二个数据表中获取第一个数据表的数据行旁边的数据行

请帮帮我。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    DataRow 知道它在哪个表中,因此具有相同数据但在不同表中的两行仍然是不同的行。

    您为什么不查找具有相同主 ID 的行,或者其他对您的情况有意义的行?

    【讨论】:

      【解决方案2】:

      IndexOf() 使用对象的默认比较器来执行匹配。 大多数对象的默认比较器是参考比较,这解释了为什么你不断得到-1。

      出于同样的原因:

      int iA = 0;
      int iB = 0;
      object oA = 0;
      object oB = 0;
      
      iA == iB = true;
      oA == oB = false
      

      【讨论】:

      • 你能解释一下这个想法吗,拜托
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2011-02-03
      • 2018-01-17
      • 1970-01-01
      • 2017-04-03
      • 2012-01-25
      相关资源
      最近更新 更多