这是目前使用的2个一维数组代码//查找关键字
//search 用于存放影片名
//search1 存放地址
                TreeNode tnRet = null;
                List<string> search = new List<string>();//数组1
                List<string> search1 = new List<string>();//数组2
                int i = 0;
                int k;
                foreach (TreeNode tn in treeView1.Nodes)
                {
                    tnRet = FindNode(tn, "搜索结果");
                    if (tnRet != null)
                    {
                        tn.Remove();
                    }
                    tnRet = FindNode(tn, word);
                    if (tnRet != null)
                      {
                        search.Add(tnRet.Text);//影片名
                       search1.Add(tnRet.Tag.ToString());//影片地址
                       i++;
                      }
                }
                if (i > 0) //添加搜索结果到新节点
                {
                    TreeNode trRoot = new TreeNode("搜索结果("+i+"条记录)");//添加到跟节点
                    this.treeView1.Nodes.Add(trRoot);
                    for (k = 0; k < i; k++)
                    {
                        TreeNode trNode = new TreeNode(search[k]);//影片名
                        trNode.Tag = search1[k];//影片地址
                        trRoot.Nodes.Add(trNode);
                    }
                }现在使用这样的代码是正常的,由于搜索数据有重复,我想把它换成1个2维数组,
搜索结果是这样的:
tnRet.Text ="影片名1"
tnRet.Tag="地址1"tnRet.Text ="影片名2"
tnRet.Tag="地址2"tnRet.Text ="影片名3"
tnRet.Tag="地址3"tnRet.Text ="影片名1"
tnRet.Tag="地址1"当中可能有2条或者3条重复一样的数据我最终的目的就是想把搜索结果去重复后再添加到treeview节点里,请问怎么做?麻烦给出具体代码,对数组还不太明白。

解决方案 »

  1.   

    稍微改的OO一点,定义一个SearchResult类
        public class SearchResult
        {
            public string Movie {get;set;}
            public string URL {get;set;}        public override bool Equals(object obj)
            {
                SearchResult sr = obj as SearchResult;
                if (sr != null)
                {
                    return sr.Movie == this.Movie && sr.URL == this.URL;
                }
                else
                {
                    return false;
                }
            }        //override GetHashCode to avoid compile warning
            public override int GetHashCode()
            {
                return base.GetHashCode();
            }
        }            //搜索代码
                  List<SearchResult> result = new List<SearchResult>();
                foreach (TreeNode tn in treeView1.Nodes)
                {  
                    TreeNode   tnRet = FindNode(tn, word);
                    if (tnRet != null)
                    {
                        SearchResult sr = new SearchResult()
                            {
                                Movie = tnRet.Text,
                                URL = tnRet.Tag.ToString()
                            };                    if (!result.Contains(sr))
                        {
                            result.Add(sr);
                    }
                }
                if (result.Count > 0) //添加搜索结果到新节点
                 {
                    //todo
                }
      

  2.   

    List里放List就是二维了List<List<string>> l = new List<List<string>>();            List<string> l1 = new List<string>();
                List<string> l2 = new List<string>();
                List<string> l3 = new List<string>();            l.Add(l1);
                l.Add(l2);
                l.Add(l3);
      

  3.   


    你不该研究不出来,已经是很简单的代码了.找到的结果都放到List中,你可以遍历List再添加到你的TreeView中去
    List<SearchResult> result = new List<SearchResult>();
           if (result.Count > 0) //添加搜索结果到新节点
            {
                             
                TreeNode trRoot = new TreeNode("搜索结果(" + i + "条记录)");//添加到跟节点
                  treeView1.Nodes.Add(trRoot);
                foreach (SearchResult sr in result)
                {
                    TreeNode trNode = new TreeNode(sr.Movie);//影片名
                      trNode.Tag =sr.URL//影片地址
                      trRoot.Nodes.Add(trNode);
                }
           }
      

  4.   

    查询int[][] counts = new int[][] { };
    for (int i = 0; i < counts.GetLongLength(0); i++) {
      var value = from v in counts[i] select v;
      int s = Array.FindIndex(value.ToArray(), v => v.Equals(value.Max()));
     }
     
     
      

  5.   

    谢谢,我还以为是把数据存在result里了,怪不得弄了半天都没输入来,原来是存到sr里了
      

  6.   

    碰到2维以上的数组就不会弄了,还得加强理解学习才行。问题已经解决了,再次感谢bloodish!