none
判断删除 RRS feed

  • 问题

  • private void databasedgv_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
            {
                int count = this.databasedgv.Rows.Count;
                if (count > 0)
                {
                    for (int i = 0; i < count; i++)
                    {
                        string dmcode = this.databasedgv.Rows[i].Cells[0].Value.ToString();
                        foreach (NexusTable nt in listTable)
                        {
                            if (nt.dmCode != dmcode)
                            {
                                listTable.Remove(nt);
                            }
                        }
                    }
                }
            }
    比如 count 是2个, dmcode值是101和102
    listTable 里有101 ,102, 103的数据,
    上面代码怎么判断 删掉listTable里的103的数据呢?

    2011年9月13日 9:55

答案

  •  

    int count = this.databasedgv.Rows.Count;
                if (count > 0)
                {

                    List<NexusTable> ListTmp=new List<NexusTable>();

                    for (int i = 0; i < count; i++)
                    {

                        string dmcode = this.databasedgv.Rows[i].Cells[0].Value.ToString();
                        foreach (NexusTable nt in listTable)
                        {
                            if (nt.dmCode == dmcode)
                                   ListTmp.Add(nt);                    

                        }                      

                    }

    listTable.RemoveAll();

    listTable=ListTmp;

                }

     可以用一个媒介list集合需要的元素


    Paul Zhou [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Paul Zhou 2011年9月21日 5:18
    2011年9月15日 7:15

全部回复

  • 不能,101的时候会删除102和103

    102的时候会删除101

    这样结果就都删除了。

    思路错误。

    正确的做法是循环比较,将没有找到的记录记下来,最后删除。这个也不是最好的,最简单的是直接将dmcode的值赋给listtable。(如果dmcode是list的子集。)


    family as water
    2011年9月13日 15:01
  • 怎样最后删除啊 ?
    2011年9月14日 0:28
  •  

    int count = this.databasedgv.Rows.Count;
                if (count > 0)
                {

                    List<NexusTable> ListTmp=new List<NexusTable>();

                    for (int i = 0; i < count; i++)
                    {

                        string dmcode = this.databasedgv.Rows[i].Cells[0].Value.ToString();
                        foreach (NexusTable nt in listTable)
                        {
                            if (nt.dmCode == dmcode)
                                   ListTmp.Add(nt);                    

                        }                      

                    }

    listTable.RemoveAll();

    listTable=ListTmp;

                }

     可以用一个媒介list集合需要的元素


    Paul Zhou [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Paul Zhou 2011年9月21日 5:18
    2011年9月15日 7:15