2010-08-26 109 views
2

我有相同的结构所述的IndexOf()方法返回-1的所有时间

的第一个具有的所述第二个

一行的两个数据表中的第二个已成立的行

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

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

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

但这不是我想要做的,我想要做的就是让下一个数据行下一个到第二张数据表中第一张数据表的数据表中

请帮助我。

回答

6

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

为什么不找一行具有相同的主ID或其他任何有意义的行?

3

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

出于同样的原因:

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

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

可以ü解释的想法更多,请 – 2010-08-26 09:20:28

+1

http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx – Nissim 2010-08-26 10:13:25

+0

感谢ü这么多 – 2010-08-26 10:28:22