遍历所有行,合并数据相同的行,去除重复行

来源:互联网 发布:宝能万科大战结局知乎 编辑:程序博客网 时间:2024/05/18 02:17
 

                        int[] intlist = JsonConvert.DeserializeObject<int[]>(strInfo.Infone);//反序列化成整型数组
                        DataTable dt_BanJiChengJiDangAn = myFRMFuXiuChengJiDaYin.Select_BanJiChengJiDangAn(intlist[0], intlist[1]);//按班提取辅修学生成绩

                        for (int i = 0; i < dt_BanJiChengJiDangAn.Rows.Count; i++) //遍历dt_BanJiChengJiDangAn所有行
                        {
                            dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = Math.Round(Convert.ToDouble(dt_BanJiChengJiDangAn.Rows[i]["成绩总评"].ToString().Trim()));
                            //对每一行数据中列["成绩总评"]小数点后的数据进行截断
                        }

                        DataTable dt_BanJiChengJi = new DataTable();//新建一个dt_BanJiChengJi用来存储被算法筛选后的数据
                        dt_BanJiChengJi.Columns.Add("辅修班名", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("课程名称", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("学号", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("学生姓名", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("成绩总评", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("评语", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("总学时", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("总学分", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("ChengJiCiShuLeiBie", typeof(string));//向dt_BanJiChengJi插入列
                        dt_BanJiChengJi.Columns.Add("年度学期", typeof(string));//向dt_BanJiChengJi插入列
                        string chengJiZongPing_ZhengKao = "";//定义并初始化字符串,用于存放正考成绩
                        string chengJiZongPing_ZhengChangBuKao = "";//定义并初始化字符串,用于存放正常补考成绩
                        string chengJiZongPing_BiYeQianBuKao = "";//定义并初始化字符串,用于存放毕业前补考成绩
                        string chengJiZongPing_BiYeHouBuKao = "";//定义并初始化字符串,用于存放毕业后补考成绩

                        for (int i = 0; i < dt_BanJiChengJiDangAn.Rows.Count; i++)//遍历dt_BanJiChengJiDangAn所有行
                        {
                            DataRow drow = dt_BanJiChengJi.NewRow();//实例化dt_BanJiChengJi行
                            for (int j = 0; j < dt_BanJiChengJiDangAn.Rows.Count; j++)//遍历dt_BanJiChengJiDangAn所有行
                            {
                                if (dt_BanJiChengJiDangAn.Rows[i]["学号"].ToString().Trim() == dt_BanJiChengJiDangAn.Rows[j]["学号"].ToString().Trim() &&
                                    dt_BanJiChengJiDangAn.Rows[i]["课程名称"].ToString().Trim() == dt_BanJiChengJiDangAn.Rows[j]["课程名称"].ToString().Trim())
                                    //判断是否同一个学生同一课程的数据
                                {
                                    if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[i]["ChengJiCiShuLeiBie"].ToString().Trim()) ==1 &&
                                        Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim())!= 1)
                                    //判断第i行和第j行的列["ChengJiCiShuLeiBie"]的值是否等于1
                                    {
                                        chengJiZongPing_ZhengKao = dt_BanJiChengJiDangAn.Rows[i]["成绩总评"].ToString().Trim();
                                        //获取第i行的列["成绩总评"]的值
                                        if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim()) == 2)
                                        //判断第j行的列["ChengJiCiShuLeiBie"]的值是否等于2
                                        {
                                            chengJiZongPing_ZhengChangBuKao = dt_BanJiChengJiDangAn.Rows[j]["成绩总评"].ToString().Trim();
                                            //获取第j行的列["成绩总评"]的值
                                        }
                                        if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim()) == 3)
                                        //判断第j行的列["ChengJiCiShuLeiBie"]的值是否等于3
                                        {
                                            chengJiZongPing_BiYeQianBuKao = dt_BanJiChengJiDangAn.Rows[j]["成绩总评"].ToString().Trim();
                                            //获取第j行的列["成绩总评"]的值
                                        }
                                        if (Convert.ToInt32(dt_BanJiChengJiDangAn.Rows[j]["ChengJiCiShuLeiBie"].ToString().Trim()) == 4)
                                        //判断第j行的列["ChengJiCiShuLeiBie"]的值是否等于4
                                        {
                                            chengJiZongPing_BiYeHouBuKao = dt_BanJiChengJiDangAn.Rows[j]["成绩总评"].ToString().Trim();
                                            //获取第j行的列["成绩总评"]的值
                                        }
                                        if (chengJiZongPing_ZhengChangBuKao != "" && chengJiZongPing_BiYeQianBuKao == ""&& chengJiZongPing_BiYeHouBuKao == "")
                                        //判断正常补考成绩、毕业前补考成绩、毕业后补考成绩的值是否为空
                                        {
                                            dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = chengJiZongPing_ZhengKao + "/" + chengJiZongPing_ZhengChangBuKao;
                                            //将重置后的成绩总评数据赋给相应的列
                                        }
                                        if (chengJiZongPing_ZhengChangBuKao != "" && chengJiZongPing_BiYeQianBuKao != "" && chengJiZongPing_BiYeHouBuKao == "")
                                        //判断正常补考成绩、毕业前补考成绩、毕业后补考成绩的值是否为空
                                        {
                                            dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = chengJiZongPing_ZhengKao + "/" + chengJiZongPing_BiYeQianBuKao;
                                            //将重置后的成绩总评数据赋给相应的列
                                        }
                                        if (chengJiZongPing_ZhengChangBuKao != "" && chengJiZongPing_BiYeQianBuKao != "" && chengJiZongPing_BiYeHouBuKao != "")
                                        //判断正常补考成绩、毕业前补考成绩、毕业后补考成绩的值是否为空
                                        {
                                            dt_BanJiChengJiDangAn.Rows[i]["成绩总评"] = chengJiZongPing_ZhengKao + "/" + chengJiZongPing_BiYeHouBuKao;
                                            //将重置后的成绩总评数据赋给相应的列
                                        }
                                    }
                                }
                            }
                            drow["辅修班名"] = dt_BanJiChengJiDangAn.Rows[i]["辅修班名"].ToString();//辅修班名
                            drow["课程名称"] = dt_BanJiChengJiDangAn.Rows[i]["课程名称"].ToString();//课程名称
                            drow["学号"] = dt_BanJiChengJiDangAn.Rows[i]["学号"].ToString();//学号
                            drow["学生姓名"] = dt_BanJiChengJiDangAn.Rows[i]["学生姓名"].ToString();//学生姓名
                            drow["成绩总评"] = dt_BanJiChengJiDangAn.Rows[i]["成绩总评"].ToString();//成绩总评
                            drow["评语"] = dt_BanJiChengJiDangAn.Rows[i]["评语"].ToString();//评语
                            drow["总学时"] = dt_BanJiChengJiDangAn.Rows[i]["总学时"].ToString();//总学时
                            drow["总学分"] = dt_BanJiChengJiDangAn.Rows[i]["总学分"].ToString();//总学分
                            drow["ChengJiCiShuLeiBie"] = dt_BanJiChengJiDangAn.Rows[i]["ChengJiCiShuLeiBie"].ToString();//ChengJiCiShuLeiBie
                            drow["年度学期"] = dt_BanJiChengJiDangAn.Rows[i]["年度学期"].ToString();//年度学期
                            dt_BanJiChengJi.Rows.Add(drow);//将新增行添加到新建表中
                            chengJiZongPing_ZhengKao = "";//重置字符串的值
                            chengJiZongPing_ZhengChangBuKao = "";//重置字符串的值
                            chengJiZongPing_BiYeQianBuKao = "";//重置字符串的值
                            chengJiZongPing_BiYeHouBuKao = "";//重置字符串的值
                        }
                        for (int i = 0; i < dt_BanJiChengJi.Rows.Count; i++)//遍历dt_BanJiChengJi所有行
                        {
                            for (int j = 0; j < dt_BanJiChengJi.Rows.Count; j++)//遍历dt_BanJiChengJi所有行
                            {
                                if (i != j && dt_BanJiChengJi.Rows[i]["学号"].ToString() == dt_BanJiChengJi.Rows[j]["学号"].ToString() &&//是否同一学生
                                    dt_BanJiChengJi.Rows[i]["课程名称"].ToString() == dt_BanJiChengJi.Rows[j]["课程名称"].ToString())//是否同一课程
                                {
                                    if (dt_BanJiChengJi.Rows[i]["成绩总评"].ToString().Length > dt_BanJiChengJi.Rows[j]["成绩总评"].ToString().Length)
                                        //比较同一学生统一课程的成绩总评的长短
                                    {
                                        dt_BanJiChengJi.Rows.RemoveAt(j);//移除重复项
                                        j--;//j递减
                                    }
                                    else
                                    {
                                        dt_BanJiChengJi.Rows.RemoveAt(i);//移除重复项
                                        j--;//j递减
                                    }
                                }
                            }
                        }

原创粉丝点击