IndexOf()方法始终返回-1

时间:2010-08-26 08:11:09

标签: c# asp.net

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

第一个有第二个的一行

第二个有行集

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

他的名字是第一个数据表:: 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

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

请帮帮我。

2 个答案:

答案 0 :(得分:6)

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

为什么不查找具有相同主ID的行,或者您的案例中其他任何有意义的行?

答案 1 :(得分:3)

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

出于同样的原因:

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

iA == iB = true;
oA == oB = false