在使用Linq的过程中,如果要进行数据的比较和处理,请记住使用ToList()方法。...

 1           private   void  simpleButton1_Click( object  sender, EventArgs e)
 2          {
 3              List < TESTCLASS >  list  =   new  List < TESTCLASS > ();
 4               int [] ary  =   new   int [] {  1 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 };
 5 
 6               for  ( int  i  =   0 ; i  <   100 ; i ++ )
 7              {
 8                  list.Add( new  TESTCLASS(i, i));
 9              }
10 
11              var list2  =  from t  in  list
12                          select  new  TESTCLASS(t.X, t.Y);
13 
14               foreach  (var t  in  list2)
15              {
16                   while  ( true )
17                  {
18                      MessageBox.Show(t.GetHashCode().ToString()  +   " : "   +  list2.ToList()[ 0 ].GetHashCode().ToString());
19                      MessageBox.Show(list2.ToList().IndexOf(t).ToString());
20                       return ; ;
21                  }
22              }
23 
24          }
25 
26           public   class  TESTCLASS
27          {
28               public  TESTCLASS( int  x,  int  y)
29              {
30                   this .x  =  x;
31                   this .y  =  y;
32              }
33 
34               int  x;
35               public   int  X
36              {
37                   get
38                  {
39                       return  x;
40                  }
41                   set
42                  {
43                      x  =  value;
44                  }
45              }
46 
47               int  y;
48               public   int  Y
49              {
50                   get
51                  {
52                       return  y;
53                  }
54                   set
55                  {
56                      y  =  value;
57                  }
58              }
59          }
60 
GetHashCode的值都不一样,检索结果为-1,按理说不应该呀,我是从list2集合中判读list2中的对象呀 。

关键代码如果改成如下方式就可以了,先将将结果保存到一个集合中就可以了
 1              var list2  =  from t  in  list
 2                          select  new  TESTCLASS(t.X, t.Y);
 3              var list3  =  list2.ToList();
 4               foreach  (var t  in  list3)
 5              {
 6                   while  ( true )
 7                  {
 8                      MessageBox.Show(t.GetHashCode().ToString()  +   " : "   +  list3.ToList()[ 0 ].GetHashCode().ToString());
 9                      MessageBox.Show(list3.ToList().IndexOf(t).ToString());
10                       return ; ;
11                  }
12              }
13 
原因不知道,只是发现了这个问题,如果那位大侠知道,就跟个贴,谢谢




转载于:https://www.cnblogs.com/rock_chen/archive/2008/03/27/1125459.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值