一个ArrayList中Add进了很多组arraylist,现在想要删除ArrayList中的某些组,arraylist的count为0的删掉,判断语句跟删除语句应该如何写

解决方案 »

  1.   


                for (int i = list.Count - 1; i >= 0; i--)
                {
                    if (((System.Collections.ArrayList)list[i]).Count == 0)
                    {
                        list.RemoveAt(i);
                    }
                }
      

  2.   

    到最后有一个arraylist的count大于0,但是为啥放到datagridview中,这一项显示是空的,我确定里面有东西,而且单独用这一个在datagridview中展示也能看到一行几列数据,这样过滤为什么就没有了
      

  3.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
      

  4.   

    到最后有一个arraylist的count大于0,但是为啥放到datagridview中,这一项显示是空的,我确定里面有东西,而且单独用这一个在datagridview中展示也能看到一行几列数据,这样过滤为什么就没有了
    这样过滤会漏项的,比如2号位置是0,判断删除后,原来的2号位置没有了,原来的3号位置变成现在的2号位置,然后执行判断现在的3号位置,原来的3号位置的数据就会漏判断,不知道楼主晕了没
      

  5.   

    到最后有一个arraylist的count大于0,但是为啥放到datagridview中,这一项显示是空的,我确定里面有东西,而且单独用这一个在datagridview中展示也能看到一行几列数据,这样过滤为什么就没有了
    这样过滤会漏项的,比如2号位置是0,判断删除后,原来的2号位置没有了,原来的3号位置变成现在的2号位置,然后执行判断现在的3号位置,原来的3号位置的数据就会漏判断,不知道楼主晕了没
    倒是懂你说的这个,我这个到最后一项放进去没有数据,应该就是因为这个是刚才为0的某一项的位置,放入datagridview中所以没数据,这个如何解决啊
      

  6.   

     int a = value.Count;//总数量
                if (a > 1)
                {
                    for (int i = 0; i < a - 1; i++)
                    {
                        for (int j = i + 1; j < value.Count; j++)
                        {
                            if (value[i].住院号 == value[j].住院号)
                            {
                                value.RemoveAt(j);
                                j = j - 1;
                            }
                        }
                        a = value.Count;
                    }
                }
    我贴一个删除一个表里面重复数据的,楼主可以参考一下
      

  7.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    没必要+1,自己测试一遍就知道了
      

  8.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。
      

  9.   

    到最后有一个arraylist的count大于0,但是为啥放到datagridview中,这一项显示是空的,我确定里面有东西,而且单独用这一个在datagridview中展示也能看到一行几列数据,这样过滤为什么就没有了
    这样过滤会漏项的,比如2号位置是0,判断删除后,原来的2号位置没有了,原来的3号位置变成现在的2号位置,然后执行判断现在的3号位置,原来的3号位置的数据就会漏判断,不知道楼主晕了没版主给出的方法是倒的序号过来删的,比如3判断过不为空,判断到2为空,删除2,然后原来2的位置变成了3,3已经判断过不为空了就没必要再判断了懂了不
      

  10.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
      

  11.   

    版主那方法可以用,能把count为0的都剔除掉,但是我的datagridview绑定的是model的数据源,如果写成
    datagridview.DataSource = arraylist[0];这样可以,但是arraylist中有两项的话,直接绑定datagridview.DataSource = arraylist确不行。怎么写啊
      

  12.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
      public static void Test2()
            {
                ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
            }
      

  13.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
      

  14.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    不光脑袋不好使,眼睛也有很大问题,抓紧时间去体检查查吧,我希望您可以健康。
      

  15.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    不光脑袋不好使,眼睛也有很大问题,抓紧时间去体检查查吧,我希望您可以健康。只是技术交流,至于说话这么恶心么?
    ok,那我们不谈技术了,我艹#你妈 这样的对话你满意了?
    求版主把我们两个一起关小黑屋
      

  16.   

    不知道楼主能不能改用List在存储集合。
    List<List> lst = new List<List>();
    lst.Remove(lst.Find(p=>p.ListItems.Count==0));
      

  17.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
      

  18.   

    不知道你的需求是什么。arraylist中有多项的话,一般有2中方法。
    一。合并各项,比如arraylist有2项,arraylist[0]有3项,arraylist[1]有4项,合并后有7项。
    datagridview.DataSource = arraylist[0].AddRange(arraylist[1]);
    二。取arraylist[0]提醒先判断arraylist中是否存在数据。
      

  19.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。
      

  20.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
      

  21.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
    如果你脑子够好的话就不会不了解问题的所在就回帖了,真逗。
      

  22.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。而且最关键的问题是,我不是引用你的吧,你掺和啥?搞不明白了真,我是和sj178220709在说,有你啥事了
      

  23.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
    如果你脑子够好的话就不会不了解问题的所在就回帖了,真逗。
    呵呵,我逗,你是2还是傻?没看懂我意思?我帮着谁说话都听不懂?我只不过说你说话冲而已,我说你不对了么,人傻不能复生
      

  24.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
    如果你脑子够好的话就不会不了解问题的所在就回帖了,真逗。
    呵呵,我逗,你是2还是傻?没看懂我意思?我帮着谁说话都听不懂?我只不过说你说话冲而已,我说你不对了么,人傻不能复生
    搞不清问题所在的人就别瞎搅合了,只会添乱。
    还是拜托您老从头看看帖子,找出问题所在再回帖,别像个小孩子一样只会乱叫。
      

  25.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
    如果你脑子够好的话就不会不了解问题的所在就回帖了,真逗。
    呵呵,我逗,你是2还是傻?没看懂我意思?我帮着谁说话都听不懂?我只不过说你说话冲而已,我说你不对了么,人傻不能复生
    搞不清问题所在的人就别瞎搅合了,只会添乱。
    还是拜托您老从头看看帖子,找出问题所在再回帖,别像个小孩子一样只会乱叫。你自己看清了再废话,谢谢,自己不理解还怪别人,活该你被骂,2B
      

  26.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
    如果你脑子够好的话就不会不了解问题的所在就回帖了,真逗。
    呵呵,我逗,你是2还是傻?没看懂我意思?我帮着谁说话都听不懂?我只不过说你说话冲而已,我说你不对了么,人傻不能复生
    搞不清问题所在的人就别瞎搅合了,只会添乱。
    还是拜托您老从头看看帖子,找出问题所在再回帖,别像个小孩子一样只会乱叫。你自己看清了再废话,谢谢,自己不理解还怪别人,活该你被骂,2B

    眼神不好使,脑袋也不灵光,火气还不小,真难为您老了。
      

  27.   

    艾玛 一个At引发的 口水战...... for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.RemoveAt(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    这个 方法 蛮好的.
      

  28.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    您老眼神也不好?奉劝各位一句,回帖之前先看明白帖子再回。我眼神好不好我不知道,我只知道我脑子够好,如果你非要嘲讽,那我也懒得理你
    如果你脑子够好的话就不会不了解问题的所在就回帖了,真逗。
    呵呵,我逗,你是2还是傻?没看懂我意思?我帮着谁说话都听不懂?我只不过说你说话冲而已,我说你不对了么,人傻不能复生
    搞不清问题所在的人就别瞎搅合了,只会添乱。
    还是拜托您老从头看看帖子,找出问题所在再回帖,别像个小孩子一样只会乱叫。你自己看清了再废话,谢谢,自己不理解还怪别人,活该你被骂,2B

    眼神不好使,脑袋也不灵光,火气还不小,真难为您老了。智商低也算了,口气还冲,也不知道谁像个疯狗一样见人就咬,也不知道什么药吃错了,赶紧回医院去吧,不要放弃治疗
      

  29.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    我绝对没有觉得自己很牛逼的意思,你指出我的错误,我很感激,但前面那个 上来就优越的不得了,实在让我恶心。
    至于代码,确实是只图省事,用了int
      

  30.   

    remove之后位置不变i不需要加一以保持不变吗?不知我说的有木有道理,版主。。
    其实是,RemoveAt后面压根就不能接受index参数,它接受object类型参数,它是在列表里面找有没有i这个int“对象”,然后移除。
    所以说 还是多用List比较好啊。

    为什么现在好多人都喜欢睁眼说瞎话?
    错误示例:
     ArrayList arr = new ArrayList();
                for (int i = 0; i < 13; i++)
                {
                    arr.Add(i);
                }
                for (int i = 0; i < arr.Count;)
                {
                    if ((int) arr[i]%3 == 0)
                    {
                        arr.Remove(i);
                    //    arr.Remove(arr[i]);
                    }
                    else
                    {
                        i++;
                    }
                }
    错误实例?我测试了一遍真心是可行的,而且你的理解建立在这个i恰巧是和你的arr中每一项一一对应的情况,所以说你错没冤枉你,自己多找找原因,当然之前的那位说话也有点冲,确实不对
    我绝对没有觉得自己很牛逼的意思,你指出我的错误,我很感激,但前面那个 上来就优越的不得了,实在让我恶心。
    至于代码,确实是只图省事,用了int那个人我也真心不想说什么了,不理会他吧- -我也很无奈的
      

  31.   

    倒序操作是必须的,foreach 更不能用。