首页 > 其他分享 >十一、LINQ基础—GroupBy子句

十一、LINQ基础—GroupBy子句

时间:2023-10-26 13:31:33浏览次数:41  
标签:Console LINQ item 分组 Key 子句 var group GroupBy

一、简介

group子句返回一个IGrouping(T Key,T element)对象序列,编译时,group子句被转换成对GroupBy方法的调用。

二、案例

案例一:

根据首字母分组,并打印到控制台

//数据源
string[] fruits = { "apple", "banana", "peach", "orange", "melon", "lemon" };

//分组查询的查询语句
var query = from f in fruits
            group f by f[0];

//执行查询
foreach (var letters in query)
{
    Console.WriteLine("words that start with letter:" + letters.Key);
    foreach (var word in letters)
    {
        Console.WriteLine(word);
    }
}

分析:

首先遍历字符串数组中的每个字符串,然后根据每个字符串的首字母进行分组,返回结果.

案例二:

var query = from f in fruits
             group f by f[0] into g
             where g.Key == 'p' || g.Key == 'b'
             select g;

分析:

如果您想要对每个组执行附加查询操作,则可以使用into上下文关键字指定一个临时标识符。使用into时,必须继续编写该查询,并最终用一个select语句或另一个group子句结束该查询。

案例三:

string[] strs = { "胡广成", "张国荣", "刘德华", "故国冰封", "万里雪飘", "AAA", "胡翰轩", "张杰" };
            var list5 = strs
                //.Where(a => a.Length == 3)
                .Select(item => item)
                .GroupBy(item => item.Length);//分组   分组依据是字符串的长度
            foreach (var item in list5)
            {
                Console.WriteLine("----------------");
                Console.WriteLine($"分组字段是{item.Key}");  //item.Key是分组依据 显示分组字段
                foreach (var items in item)//内层循环遍历分组项
                {
                    Console.WriteLine(items);
                }
            }

分析:

按照名字的长度进行分组显示。

十一、LINQ基础—GroupBy子句_字符串

三、多字段分组示例

GroupBy(x => new { x.a , x.b, x.c }).Select( x=> ( new Class名 { a=x.Key.a , b=x.Key.b , c = x.Key.c } ))

技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!

开源库地址,欢迎点亮:

GitHub: https://github.com/ITMingliang

Gitee:  https://gitee.com/mingliang_it

GitLab:  https://gitlab.com/ITMingliang

建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群

十一、LINQ基础—GroupBy子句_首字母_02


标签:Console,LINQ,item,分组,Key,子句,var,group,GroupBy
From: https://blog.51cto.com/u_16244728/8033429

相关文章

  • EF Core无法翻译groupby等子查询
    烦人的表达式转化错误varquery1=emps.Grouby(v=>v.DeptId).Select(g=>new{DeptId=g.Key,Salary=g.Max(x=>x.Salary);varresult=fromdindeptsjoinqinquery1ond.Idequalsq.DeptIdselectnew{d.Name,q.Salary};上面代码运行起......
  • C# Linq to Enitty Lamda中日期格式化,请使用SqlFunctions.DateName及SqlFunctions的其
    vardata=db.Invoice.Select(i=>newInvoiceVM{InvoiceId=i.InvoiceId,GroupIds=SqlFunctions.DateName("yyyy",i.BillDate)+"-"+SqlFunctions.DateName("MM",i.BillDate),Description=i.Description,CreateDate=i.Cre......
  • 九、LINQ基础——WHERE子句
    一、简介将一个布尔条件("谓词")应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。适用场景:实现过滤,查询等功能。说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。Where操作包括3种形式,分别为:简单形式、关系条件形式......
  • 七、LINQ基础—Except子句
    一、简介Except返回差集,差集是指位于一个集合但不位于另一个集合的元素。Except是把第一个集合里面的数据去掉在第二个集合里面出现过的数据。二、案例案例一:varq=(fromcindb.Customersselectc.Name).Except(fromeindb.Employees......
  • 一、LINQ简介
    一、什么是LINQ长期以来,开发社区形成以下的格局:1、面向对象与数据访问两个领域长期分裂,各自为政。2、编程语言中的数据类型与数据库中的数据类型形成两套不同的体系,例如:C#中字符串用string数据类型表示。SQL中字符串用NVarchar/Varchar/Char数据类型表示。3、SQL编码体验落......
  • EF使用linq和lamda实现sql查询的内连接(inner join)和左连接(left join)
    背景介绍:1.OperateLogInfo:日志表2.SystemUserInfo:用户表需求:查询日志表,要根据日志表的创建人id查询出创建人姓名(日志表连接用户表)publicstaticstringTest(){stringresult=null;varsqlLogs=newList<string>();......
  • Linq取单一元素
    LINQ通常查询到的结果是IEnumerable<T>集合类型,想要从中取出单一的元素,能使用Single、First、Last、ElementAt等方法,以及它们带有OrDefault的形式。Single返回序列中的惟一元素,First、Last返回第一個、最後一個元素。对比:方法序列为null序列不包含任何元素序列只包含一个......
  • 【C#】【System.Linq】一些便捷的数据处理方法(Range、Select)
    因为用习惯了Python中一些便捷的方法,随即查询C#中有没有类似的。 一、Range()方法在Python中,range(Start,End,Step)可以直接生成一个可迭代对象,便用于需要循环多次处理某些代码块:(注:Range方法中的End是开区间,range(1,10)实际的取值是(1~9))1foriteminrange(1,10):2print(ite......
  • 【算法】国庆加班,火锅与Linq.AddRange的奇妙螺旋
    在国庆假期的一个傍晚,小悦正在家中享受火锅美食。她嘴里咀嚼着鲜嫩的牛肉,脸上洋溢着满足的微笑。突然,手机铃声响起,打破了这温馨的氛围。她拿起手机一看,是公司打来的电话。“小悦,有个紧急的项目需要处理,你能来公司加一下班吗?”电话那头传来领导焦急的声音。小悦顿时嘟起嘴,不太情......
  • .Net Linq语句去除A集合中存在的B集合数据
    这算是一个取巧的场景,在添加数据库的时候,存在一种场景,主数据表的Id和关系表的Id关联,那么在添加子表的时候,为了避免重复,就可以使用到,当然避免重复的方法有很多,这算是一种偷懒的方式,以下是用过C#代码模拟场景,本片随笔为了记录.....usingSystem.Collections.Generic;n......