C# Linq group by 和 group by into 运用实例

Form:在一个查询中如果需要查询多个数据源则使用多个From

Group:分组,将查询结果按照指定分组条件放入到不同的分组中

Into:使用Into上下文关键字创建一个临时标示符,一遍将group、join或select子句的结果存储到新的标示符中

Let:在查询中增加一个范围变量,可以直接运算来的,也可以调用外部方法来存放外部方法得到的结果集;

List<Student> listStudent = new List<Student>
            {
               new Student{StuNo="11",StuName="李三",ClassNo="1"},
               new Student{StuNo="22",StuName="王五",ClassNo="2"},
               new Student{StuNo="33",StuName="张猛",ClassNo="3"},
               new Student{StuNo="44",StuName="刘刚",ClassNo="1"},
               new Student{StuNo="55",StuName="夏飞",ClassNo="2"},
               new Student{StuNo="66",StuName="胡凯",ClassNo="3"},
            };
            List<ClassInfo> listClassInfo = new List<ClassInfo>() {
                new ClassInfo{ClassNo="1",ClassName="班级一班"},
                new ClassInfo{ClassNo="2",ClassName="班级二班"},
                new ClassInfo{ClassNo="3",ClassName="班级三班"},
            };
            var item = from s in listStudent
                       group s by s.ClassNo;
            listBox1.Items.Clear();
            foreach(IGrouping<string ,Student> ig in item)
            {
                listBox1.Items.Add(ig.Key);
                listBox1.Items.Add("=============================");
                    foreach(Student s in ig)
                    {
                        string info = string.Format("学号:{0} 姓名:{1} 班级:{2} 当前分组:{3}", s.StuNo, s.StuName, s.ClassNo,ig.Key);
                        listBox1.Items.Add(info);
                    }
            }

========================================

List<Student> listStudent = new List<Student>
            {
               new Student{StuNo="11",StuName="李三",ClassNo="1"},
               new Student{StuNo="22",StuName="王五",ClassNo="2"},
               new Student{StuNo="33",StuName="张猛",ClassNo="3"},
               new Student{StuNo="44",StuName="刘刚",ClassNo="1"},
               new Student{StuNo="55",StuName="夏飞",ClassNo="2"},
               new Student{StuNo="66",StuName="胡凯",ClassNo="3"},
            };
            List<ClassInfo> listClassInfo = new List<ClassInfo>() {
                new ClassInfo{ClassNo="1",ClassName="班级一班"},
                new ClassInfo{ClassNo="2",ClassName="班级二班"},
                new ClassInfo{ClassNo="3",ClassName="班级三班"},
            };
            var query_stu = from stu in listStudent
                            group stu by stu.ClassNo into c_table
                            from cl in listClassInfo
                            where cl.ClassNo == c_table.Key
                            select new { classId = c_table.Key, className = cl.ClassName,stus = c_table };
            foreach(var item in query_stu)
            {
                listBox1.Items.Add("=====================" + item.className + "=================");
                foreach(Student s in item.stus)
                {
                    string info = string.Format("学号:{0} 姓名:{1} ", s.StuNo, s.StuName);
                    listBox1.Items.Add(info);
                }

时间: 2024-10-27 14:15:27

C# Linq group by 和 group by into 运用实例的相关文章

C# Linq to sql 实现 group by 统计多字段 返回多字段

Linq to sql 使用group by 统计多个字段,然后返回多个字段的值,话不多说,直接上例子: var wflist = from u in db.TWelFare where u.fy_no == fy_no orderby u.we_no group u by new { weno = u.we_no, wename = u.we_name } into g select new { g.Key.weno, g.Key.wename }; 结果就是根据we_no和we_name的统

bzoj1821[JSOI2010]Group 部落划分 Group

bzoj1821[JSOI2010]Group 部落划分 Group 题意: n个野人,分为k个部落,两个部落之间距离定义为两个部落最近两个野人的距离,要求划分时最近的部落最远.求这种划分下部落间最近距离.n,k≤1000,野人坐标≤10000是整数. 题解: 每次将两个部落连接,则这两个部落之间的距离则消失,因此我们应尽力让那些比较短的边消失,所以先O(n2)弄出野人间两两的边,将它们按距离从小到大排序,然后用类似Kruscal的方法(其实就是Kruscal)连边,最后连的边的下一条可连的边的

1821: [JSOI2010]Group 部落划分 Group

1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1308  Solved: 627[Submit][Status] Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪聪根本就不知道部落究竟是如何分布的. 不过好消息是,聪聪得

【BZOJ】1821: [JSOI2010]Group 部落划分 Group(最小生成树+贪心)

http://www.lydsy.com:808/JudgeOnline/problem.php?id=1821 这题裸题. 本题要求最短距离最长,很明显,我们排序. 这里存在贪心,即我们把边权最小的全分给n个部落的内部,然后剩下的边最小的就是答案. 将边权较小的边分给k个部落,用并查集生成最小树,使得内部的边总是小于连到外部的边.然后分剩下k个点即可,剩下的k个点的那条边一定是部落之间最小的且最长的边. #include <cstdio> #include <cstring> #

【BZOJ 1821】 [JSOI2010]Group 部落划分 Group

1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1353  Solved: 650 [Submit][Status][Discuss] Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了--聪聪根本就不知道部落究竟是如何分布的.

洛谷 1821: [JSOI2010]Group 部落划分 Group

1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2596  Solved: 1221[Submit][Status][Discuss] Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪聪根本就不知道部落究竟是如何分布的.

[JSOI2010][BZOJ1821]Group 部落划分 Group

1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1477  Solved: 709[Submit][Status][Discuss] Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪聪根本就不知道部落究竟是如何分布的. 不

高级分组group by 、 group by cube、 group by rollup 使用说明

1.分别以job和deptno分组求和select sum(sal),job,deptno from emp group by grouping sets(job,deptno); 2.2^n-1分组(n表示列的数量,如果有括号里面的括起来的多个列算一个列 举例:cube((a,b),c)n=2;cube(a,b) n=2;select sum(sal) ,deptno,job from emp group by cube(deptno,job);cube__>2^n      --group

[Bzoj1821][JSOI2010]Group 部落划分 Group(并查集)(二分答案)

1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2949  Solved: 1392[Submit][Status][Discuss] Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪聪根本就不知道部落究竟是如何分布的.

BZOJ-1821: [JSOI2010]Group 部落划分 Group (二分+并查集)

1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2931  Solved: 1384[Submit][Status][Discuss] Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了--聪聪根本就不知道部落究竟是如何分布的.