随笔 - 60  文章 - 1 评论 - 45 trackbacks - 8
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我的标签

随笔分类

随笔档案

收藏夹

cnblogs

CSDN

其他BLOG

收藏

网络.Net源代码

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 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 
原因不知道,只是发现了这个问题,如果那位大侠知道,就跟个贴,谢谢




posted on 2008-03-27 15:45 CY2008.NET 阅读(78) 评论(0)  编辑 收藏 所属分类: 小经验C#编程LINQ

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-27 19:44 编辑过


相关链接: