Linq实现分组的不同字段汇总
来源:互联网 发布:软件开发管理流程图 编辑:程序博客网 时间:2024/05/21 19:04
最近遇到一个需求,情景如下:
对于一个工厂,工人可能会属于多个工种,比如
对应的数据库存储结构是:
最终界面显示为:
Linq实现:
///查询出来冗余数据
var list=from o in tbl_worker_craft
select new tbl_worker_craft
{
worker=o.worker,
craft=o.craft
}
///对数据进行分组 IEnumerable<IGrouping<string, tbl_worker_craft>> jointGroup = list.GroupBy(o => o.工人, o => o);///取交集,将list中有相同工人的数据去除,保存到listd中 IList<tbl_worker_craft> listd = list.Intersect(list, new WorkerCraftEquality()).ToList(); //自定义比较类见下foreach (var item in jointGroup)///将list,和listd的key值对应,将list中冗余的某个工人对应的所有工种,拼接到一起
{
List<tbl_worker_craft> jointList = item.ToList(); //取某个工人的所有冗余数据
tbl_worker_craft oldjoin = listd.SingleOrDefault(o => o.工人 == item.Key); //在listd中获取到对应的值
string craft_item = ""; //定义工种的拼接值
foreach (var ditem in jointList)
{
craft_item += ditem.工种+ ","; //循环拼接该工人的最终工种组成串
}
oldjoin.工种= craft_item; //将最终的工种拼接值赋给该工人的工种字段
listd.Remove(listd.SingleOrDefault(o => o.工人 == item.Key)); //移除原来的listd中该工人的唯一数据
listd.Add(oldjoin);
}
return listd; //最终的listd就是所得
注:/// <summary> /// 自定义模板表的比较类 /// </summary> public class WorkerCraftEquality: IEqualityComparer<tbl_worker_craft> { public bool Equals(tbl_worker_craft x, tbl_worker_craft y) { return x.工人 == y.工人; } public int GetHashCode(tbl_worker_craft obj) { if (obj == null) { return 0; } else { return obj.ToString().GetHashCode(); } } }
- Linq实现分组的不同字段汇总
- C#Linq分组汇总
- Linq实现DataTable的分组统计
- linq to sql 学习(7)linq的分组汇总操作
- linq对数据集多个字段进行分组
- folder汇总字段的实现
- 用linq做datatable分组统计时,字段为null 转换类型出错的解决方案 亲测
- SQL 两个字段分组,其中一个字段的不同情形,分类并计算数量
- 创建计算字段 汇总数据 分组数据
- asp.net Linq 实现分组查询
- asp.net Linq 实现分组查询
- asp.net Linq 实现分组查询
- nginx实现子域名访问TP不同的分组
- nginx实现子域名访问TP不同的分组
- 用Linq将成绩按不同分数段进行分组
- LINQ 分组
- Linq技术二:Linq to XML及xml增删改查的不同实现方式
- 实现有相同字段的不同记录中不同字段的拼接
- qt5几个类和机制的简要介绍
- 对链表进行排序
- undefinedreferenceto`vtablefor出现原因我这里的一个答案
- Servlet配置和ServletFilter配置
- 智能网&NGN(三)
- Linq实现分组的不同字段汇总
- c++ program -->1 case structure and loop statement
- CSS中元素水平居中显示的方法
- 二叉树
- 深入探讨 Java 类加载器
- WIFI加电过程
- MAC下Android的Eclipse开发环境的搭建
- Linux0.11-内核态与用户态
- 初爱