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;
}
使用Datable 的小例子
最新推荐文章于 2024-11-05 21:20:21 发布