使用Datable 的小例子

本文介绍了一种用于生成教师节祝福报告的数据处理方法,通过分析活动内容并利用JSON反序列化,实现对教师信息的整理及合并,最终生成带有个性化祝福的报表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
public DataTable GetDataTableForTeacherDayReport(DateTime startTime, DateTime endTime, string flag)
        {
            DataTable dt = new DataTable();

            var dcs = new DataColumn[]{                
             new DataColumn("收货人",typeof(string)),
             new DataColumn("收货人电话",typeof(string)),
             new DataColumn("收货人邮编",typeof(string)),
             new DataColumn("收货人地址",typeof(string)),
             new DataColumn("省份",typeof(string)),
             new DataColumn("备注",typeof(string))};
            dt.Columns.AddRange(dcs);
            DataTable temp = dt.Copy();
            
            var keyColumn = dt.Columns.Add("key", typeof(string));
            dt.PrimaryKey = new DataColumn[] { keyColumn };//设置dt表主键

            HashSet<string> hs = new HashSet<string>();
            BLL.Activity.Dto.TeacherDay day = null;
            DataTable dtTemp = TeacherDay.Instance.GetDataTableForTeacherDayReport(startTime, endTime, flag);
            foreach (DataRow r in dtTemp.Rows)
            {
                //反序列化JSON字符串为对象
                day = JsonConvert.DeserializeObject<BLL.Activity.Dto.TeacherDay>(r["ActivityContent"].ToString());
                string key = day.TeacherName + "|" + day.SchoolName;//定义唯一值
                if (hs.Add(key))//添加成功,则加入dt新行中
                {
                    DataRow row = dt.NewRow();
                    row[0] = day.TeacherName;
                    row[1] = day.TeacherMobile;
                    row[2] = day.PostCode;
                    row[3] = day.TeacherAddress;
                    row[4] = day.Province;
                    row[5] = string.Format("敬爱的{0}老师 祝您教师节快乐!您的学生{1}", day.TeacherName, day.StudentName);
                    row[6] = key;
                    dt.Rows.Add(row);
                }
                else//否则更新列【备注】信息
                {
                    DataRow myKeyRow = dt.Rows.Find(key);
                    myKeyRow.BeginEdit();
                    myKeyRow[5] = myKeyRow[5].ToString() + "," + day.StudentName;
                    myKeyRow.EndEdit();
                    dt.AcceptChanges();
                }
            }
            //合并到表temp中,并舍弃表dt中的主键列
            temp.Merge(dt,true, MissingSchemaAction.Ignore);
           
            return temp;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值