当前位置: 代码迷 >> C# >> List<string> listwxyh = new List<string>(); 的技术偏题
  详细解决方案

List<string> listwxyh = new List<string>(); 的技术偏题

热度:42   发布时间:2016-05-05 03:50:07.0
List<string> listwxyh = new List<string>(); 的技术难题!
需要是:listwxyh  是存放的需要复制的人的信息,我的要求是当业务完成后删掉之前这里面存储的这条信息。见下图


原始数据

要求就是第一个业务已经完成了 这里面又会把他删除 要求是怎么才能不删除 过滤掉!


 string Strsqlwxyh = "select uid,wxname,token from  tp_wxuser where   wxname like '%事业中心%'";
            DataSet dswxyh = DbHelperMySQL.Query(Strsqlwxyh);
            List<string> listwxyh = new List<string>();
            if (dswxyh.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < dswxyh.Tables[0].Rows.Count; i++)
                {
                    string Token = dswxyh.Tables[0].Rows[i][2].ToString();//循环Token
                    listwxyh.Add("delete from tp_img where token='" + Token + "'");
                    ///循环插入
                    DbHelperMySQL.ExecuteSqlTran(listwxyh);
                  

                    string Uid = dswxyh.Tables[0].Rows[i][0].ToString();
                    string Uname = dswxyh.Tables[0].Rows[i][1].ToString();
                    string Strsqltw = "select uid,uname,keyword,type,text,classid,classname,pic,showpic,info,url,createtime,uptatetime,click,token,title,usort from tp_img  where token ='" + Source + "'";
                    DataSet dstw = DbHelperMySQL.Query(Strsqltw);
                    List<string> listtw = new List<string>();
                    if (dstw.Tables[0].Rows.Count > 0)
                    {
                        for (int j = 0; j < dstw.Tables[0].Rows.Count; j++)
                        {
                            listtw.Add("insert into tp_img (uid,uname,keyword,type,text,classid,classname,pic,showpic,info,url,createtime,uptatetime,click,token,title,usort) values ('" + Uid + "','" + Uname + "','" + dstw.Tables[0].Rows[i][2] + "','" + dstw.Tables[0].Rows[i][3] + "','" + dstw.Tables[0].Rows[i][4] + "','" + dstw.Tables[0].Rows[i][5] + "','" + dstw.Tables[0].Rows[i][6] + "','" + dstw.Tables[0].Rows[i][7] + "','" + dstw.Tables[0].Rows[i][8] + "','" + dstw.Tables[0].Rows[i][9] + "','" + dstw.Tables[0].Rows[i][10] + "','" + dstw.Tables[0].Rows[i][11] + "','" + dstw.Tables[0].Rows[i][12] + "','" + dstw.Tables[0].Rows[i][13] + "','" + Token + "','" + dstw.Tables[0].Rows[i][15] + "','" + dstw.Tables[0].Rows[i][16] + "')");
                        }
                        ///循环插入
                        DbHelperMySQL.ExecuteSqlTran(listtw);
                    }
                    
                }
               
                }

------解决思路----------------------
有点明白你的意思,就是完成后有一条信息是和数组中对应的,如果这样的话对数组进行查询是否包含项,获得包含项序号就可以删除了,已有查询函数可以直接调用,难道不会?

            List<string> aaa = new List<string>();
            aaa.AddRange (new string []{"这","那","这个","那个"});
            int aa = aaa.IndexOf("这个");
            aaa.Remove("那");
            aaa.RemoveAt(aa);

------解决思路----------------------
引用:
Quote: 引用:

listtw.RemoveAt(0);


不妥!如果第一个失败了,后面都成功了,留下来的不是第一个而是最后一个。另外,前面的移除了会影响迭代器执行的次数。


待删除的数据的 token 应该单独记录在一个集合里。等foreach循环结束,再来便利这个“待删除的数据的token集合”。
  相关解决方案