C#做一个对excel表数据进行筛选的小程序,逻辑有点乱,求大神指导

qq_34976307 2018-01-26 02:53:43

现在有这样一个Excel表,数据格式如图,我现在已经将Excel转换成DataTable了,Excel表是乱序的,现在要筛选同一个人同一天最早进的刷卡记录和最晚出的刷卡记录,业务要求不依赖于排序,不对dataTable进行delete(),操作。

我自己写的一个版本是这样的
#region Version 1

//if (dt != null && dt.Rows.Count > 1)
//{
// dt.Columns[0].ColumnName = "F1";
// dt.Rows.RemoveAt(0);
// dt.DefaultView.Sort = "F1,F6 ASC";
// dt = dt.DefaultView.ToTable();
//}
//int j = 0;

////定义out的对比数据
//string tempNo = "";
//string tempDate = "";
//string tempFlag = "out";
////定义in的对比数据
//string tempNo2 = "";
//string tempDate2 = "";
//string tempFlag2 = "in";

//for (int i = 0; i < dt.Rows.Count; i++)
//{
// if (string.IsNullOrEmpty(dt.Rows[i][0].ToString())) //为避免最后一行为空
// {
// break;
// }
// if (i >= dt.Rows.Count)
// {
// break;
// }

// if (dt.Rows[i][6].ToString() == "in")
// {
// if (string.IsNullOrEmpty(tempNo2))
// {
// tempNo2 = dt.Rows[i][0].ToString();
// tempDate2 = dt.Rows[i][5].ToString();

// }
// else
// {
// //比较in
// if (Convert.ToDateTime(tempDate2).ToString("yyyy-MM-dd") == Convert.ToDateTime(dt.Rows[i][5]).ToString("yyyy-MM-dd"))//比较当前行和模板是否为同一天
// {
// if (Convert.ToDateTime(tempDate2) > Convert.ToDateTime(dt.Rows[i][5])) //如果当前行的时间早于模板时间,则删除模板时间行,并记录模板行下标
// {
// tempDate2 = dt.Rows[i][5].ToString();
// dt.Rows[i - 1].Delete();

// i -= 1;

// }
// else
// {
// dt.Rows[i].Delete(); //否则删除当前行
// i -= 1;
// }
// }
// else
// {
// tempDate2 = dt.Rows[i][5].ToString();

// }
// }
// }
// else
// {


// if (dt.Rows[i][6].ToString() == "out")
// {
// if (string.IsNullOrEmpty(tempNo))
// {
// tempNo = dt.Rows[i][0].ToString();
// tempDate = dt.Rows[i][5].ToString();

// }
// else
// {
// //比较out
// if (Convert.ToDateTime(tempDate).ToString("yyyy-MM-dd") == Convert.ToDateTime(dt.Rows[i][5]).ToString("yyyy-MM-dd"))
// {
// if (Convert.ToDateTime(tempDate) < Convert.ToDateTime(dt.Rows[i][5]))
// {

// tempDate = dt.Rows[i][5].ToString();
// dt.Rows[i - 1].Delete();
// i -= 1;


// }
// else
// {


// dt.Rows[i].Delete();
// i -= 1;

// }
// }
// else
// {
// tempDate = dt.Rows[i][5].ToString();

// }
// }
// }
// }
//}
...全文
781 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
大然然 2018-02-01
  • 打赏
  • 举报
回复
根本不用这么麻烦,4,5行代码就可以搞定,给你一个思路,不管是datable, 还是list ,先对用户名进行分组,然后在求 max最晚打卡时间, min最早打卡时间



另外我的代码是某个人的时间,而你的要求是每个人+ 某天的时间, 所以你分组可以用 用户名+时间(年月日)来分组
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧