我个人正在做一个朋友圈,要显示和统计我的朋友圈的第一层,第二层,第三层,第四层就够了表:memberid,friendid条件:如果第二层的朋友已经在第一层显示了就要过滤掉我应该怎么做呢,请高手赐教!

解决方案 »

  1.   

    从第一层开始,用数组 A把朋友都即下来,第一层没有什么,
    到第二层就判断,如果是数组A中没有,就加到数组A中,如果已经在A中了就给他过滤掉。
    呵呵出了第一层的每一个朋友都得和数组A判断。
      

  2.   

    那请问具体应该怎么做呢,实际上就一张表,friendlist两个字段memberid,friendid
      

  3.   

    那就用循环了
    ArrayList friendList = new ArrayList();
    for(int i =1; i<= 4; i++)
    {
      DataSet pp = new DataSet();
      string pp = "select * from friendList where 层数= i";
      '数据连接****
       ***.Fill(pp);
      if(i ==1)
      {
          foreach(DataRow row in pp.Tables[0].Rows)
          {
              friendList.Add( row["friendid"].ToString());
          }
      }
      else
      {
           foreach(DataRow row in pp.Tables[0].Rows)
           {
                if(friendList.IndexOf(row["friendid"].ToString()) != -1)
                {
                    friendList.Add(row["friendid"].ToString());
                  }
                 else
                 {
                    pp.Tables[0].Rows.Remove(row);
                 }
            }
            pp.Tables[0].AcceptChanges();
       }
    } 具体的操作你就看着办吧。我只是简单的实现你想要的功能。
      

  4.   

    如果我用javascript应该怎么实现呢
      

  5.   

    我数据库中没有设置层次的字段,是用memberid,friendid来递归循环的,请问是否合理呢
      

  6.   

    这个问题很不清楚,没有层的概念那么memberid,friendid是什么关系,是不是相同的数据,即都是人员编号,呵呵这样很容易数据就变成死循环。比如说A的朋友是B ,B的朋友是C,C的朋友有有A,呵呵这样用递规,就没个头了啊。要考虑你现有的数据结构,采取最简单的方法。
      

  7.   

    我觉得还是用递归比较简单。
      Dim cp As Short
            Dim j As Short 
    cp = CNode.Nodes.Count
            If cp = 0 Then
                叶子节点的操作代码
                Exit Sub
            Else
                For j = 0 To cp - 1
                    Call Cpoint(CNode.Nodes(j))
                Next
            End If