主要的代码是这里:其它的不用管
private static void Collect(ArrayList list)
        {
            PrintList(list);
            Console.WriteLine("Collected:");
            for (int i = 0; i < list.Count; i++)
            {
                Dog dogI = (Dog)list[i];
                for (int j = i + 1; j < list.Count; j++)
                {
                    Dog dogJ = (Dog)list[j];
                    if (dogI.Id == dogJ.Id)
                    {
                        dogI.Number += dogJ.Number;
                        list.RemoveAt(j);
                    }
                }
                Print(dogI);
            }
        }

解决方案 »

  1.   

    ArrayList
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 10
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 10
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 10
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 10
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 10
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 10
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 10
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 10
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 10
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 10
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 10
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 10
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 10
    Collected:
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 40
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 40
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 40
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 40
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 40
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 80
    这是结果,我想的是这样:
    Id is c4dd303c-7574-4d5f-81ab-4d5e1b85c400, Name is dog1,Number is 40
    Id is e142d74c-c0ec-40ba-b80e-54866848c41e, Name is dog2,Number is 40
    Id is 32610084-eb16-4d58-83c9-cce6bb4570c1, Name is dog3,Number is 40
      

  2.   

    循环就行了:
        private static void Collect(ArrayList list)
            {
                PrintList(list);
                Console.WriteLine("Collected:");
                for (int i = 0; i < list.Count; i++)
                {
                    Dog dogI = (Dog)list[i];
                    for (int j = i + 1; j < list.Count; j++)
                    {
                        Dog dogJ = (Dog)list[j];
                        if (dogI.Id == dogJ.Id)
                        {
                            dogI.Number += dogJ.Number;
                            list.RemoveAt(j);
                        }
                    }
                    Print(dogI);
                }
            }
      

  3.   

    yang20052008(Apex) 说的这样不行,再帮我公析一下,谢谢,
      

  4.   

    哎。。这么多的高手,没人帮我,
    还是我自己改好了,发出来:
    private static void Collect(ArrayList list)
            {
                PrintList(list);
                Console.WriteLine("Collected:");
                for (int i = 0; i < list.Count; i++)
                {
                    int number = 0;
                    if (list[i] != null)
                    {
                        Dog dogI = (Dog)list[i];
                        number = dogI.Number;
                        for (int j = i + 1; j < list.Count; j++)
                        {
                            if (list[j] != null)
                            {
                                Dog dogJ = (Dog)list[j];
                                if (dogI.Id == dogJ.Id)
                                {
                                    number += dogJ.Number;
                                    list[j] = null;
                                }
                            }
                        }
                        dogI.Number = number;
                        Print(dogI);
                    }
                }
            }
      

  5.   


    public static void Collect(ArrayList list)
    {
      Hashtable ht = new Hashtable();
      foreach(Dog dg in ArrayList)
      {
        if (!ht.Contains(dg.Id)
        {
          ht.Add(dg.Id,dg);
        }
        else
        {
          (ht[dt.Id] as Dog).Number += dg.Number;
        }    
      }
      //把ht当中的对象Print出来.
    }
      

  6.   

    LS的if   (!ht.Contains(dg.Id) 
            { 
                ht.Add(dg.Id,dg); 
            }
            (ht[dt.Id]   as   Dog).Number   +=   dg.Number;
      

  7.   

    你为什么不在数据库里做,ID(GUID)、Name、Number
    select sum(number) from tablename group by name这不就都解决了吗
      

  8.   

    http://www.cnblogs.com/coding1016/archive/2007/11/30/978513.html  代码生成器