Linq Group By

最近在做一个数据库比对工具,查询索引的时候,需要把索引做一个转换

查询出的数据:

IX_Fn_T_Moneny_PID NONCLUSTERED ID
IX_Fn_T_Moneny_Name_PID NONCLUSTERED ID
IX_Fn_T_Moneny_Name_PID NONCLUSTERED Name

需要转化成

IX_Fn_T_Moneny_PID NONCLUSTERED ID
IX_Fn_T_Moneny_Name_PID NONCLUSTERED ID,Name

就想着用Linq来实现分组转换,却遇到了问题,原来Linq的GroupBy()返回的是一个IGrouping<Key,T>类型,一时间不知道怎么取Group中的数据了。经过多番查找,终于找到了正确用法,笔记一下。

 //获取索引 并且合并                                      
                    t.indexModes = indexList.Where(p => p.PID == t.ID).GroupBy(c => new { c.isUnique, c.Name, c.sType, c.typeDesc, c.PID }).Select(c => new IndexMode {
                        Name = c.Key.Name,PID = c.Key.PID,
                        isUnique = c.Key.isUnique,
                        sType = c.Key.sType,
                        typeDesc = c.Key.typeDesc,
                        colName = string.Join(",", c.ToList().Select(x => x.colName))
                    }).ToList();

居然可以IGrouping<K,T>.ToList()成T,也是神奇了。

 

posted @ 2020-05-12 17:08  咖啡不会醉  阅读(403)  评论(0编辑  收藏  举报