Linq(03)基础之Orderby group-by

说明:本内容来自微软的MSDN,好记性不如烂笔头,加深印象。
我的心得:@开头

 

Let子句

1)      在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用。

2)       该关键字可以创建一个新的范围变量,并且用您提供的表达式的结果初始化该变量。

3)       一旦用值初始化了该范围变量,它就不能用于存储其他值。

@相当于SQL的子查询

@计算一次,提高性能。

    public class let子句

    {

        // 找出含m的英文名字

        public static void TestLet()

        {

            string[] strings =

            {

             "A penny saved is a penny earned.",

            "The early bird catches the worm.",

            "The pen is mightier than the sword."

            };

           

            var earlyBirdQuery =

               from sentence in strings

               let words = sentence.Split(' ')

               from word in words

               let w = word.ToLower()

               where w[0] == 'a' || w[0] == 'e'

               select word;

 

            foreach (var item in earlyBirdQuery)

            {

                Console.WriteLine("\"{0}\" starts with a vowel", item);

            }

        }

}

 

 

where 子句

1)  它将一个布尔条件(谓词)应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。

2)  一个查询表达式可以包含多个 where 子句,一个子句可以包含多个谓词子表达式。

3)   运算符:> < 等于(==) (||) (&&)

4)   where 子句是一种筛选机制

5)   不能放在第一个或最后一个子句,它几乎可以放在查询表达式中的任何位置。

@SQLwhere用途相同,算术运算符和逻辑运算符使用.NET中的。

orderby 子句

1) orderby 子句可使返回的序列子序列(组)升序降序排序。

2) 可以指定多个键,以便执行一个或多个次要排序操作。

3) 默认排序顺序为升序(ascending

4) 可以指定自定义比较器。但是,只能通过基于方法的语法使用它。

5) 编译时,orderby 子句被转换为对 OrderBy 方法的调用。orderby 子句中的多个键转换为 ThenBy 方法调用。

@SQLorder by用途相同,也有升序和降序。

group 子句

1)      group 子句返回一个 IGrouping<(Of <(TKey, TElement>)>) 对象序列,这些对象包含零个或更多个与该组的键匹配的项。

2)      对每个组执行附加查询操作,则可以使用 into 上下文关键字指定一个临时标识符。

3)      使用 into 时,必须继续编写该查询,并最终用一个 select 语句或另一个 group 子句结束该查询。通常和group by 结合使用。

// Group students by the first letter of their last name

// Query variable is an IEnumerable<IGrouping<char, Student>>

var studentQuery2 =

    from student in students

    group student by student.Last[0] into g

    orderby g.Key

    select g;

 

 

4)      组键可以是任何类型,如字符串、内置数值类型、用户定义的命名类型或匿名类型。

5)      布尔值作为键将结果划分成两个组。请注意,该值是由 group 子句中的子表达式产生的。

按字符串进行分组

char。可以很容易地改为指定字符串键

按布尔进行分组

使用布尔值作为键将结果划分成两个组。请注意,该值是由 group 子句中的子表达式产生的。

按数值范围进行分组

按复合键进行分组

当您想要按照多个键对元素进行分组时,可使用复合键。通过使用匿名类型命名类型来存储键元素,可以创建复合键。当您想要按照多个键对元素进行分组时,可使用复合键。通过使用匿名类型或命名类型来存储键元素,可以创建复合键。

        public static void TestGroupby()

        {

            IEnumerable<IGrouping<string,Student>> g =

             Student.students

                .GroupBy(x => x.Last);

 

            foreach (IGrouping<string,Student> item in g)

            {

                Console.WriteLine(string.Format("group key {0}",item.Key));

 

                foreach (Student item2 in item)

                {

                    Console.WriteLine(string.Format("name {0}", item2.First));

                }

            }

        }

join 子句

1)  使用 join 子句可以将来自不同源序列并且在对象模型中没有直接关系的元素相关联。

唯一的要求是每个源中的元素需要共享某个可以进行比较以判断是否相等的值。

转载于:https://www.cnblogs.com/htht66/archive/2012/01/29/2330897.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux-tar命令详解

转自&#xff1a;http://www.21andy.com/blog/20060820/389.html linux解压 tar命令 tar命令 tar [-cxtzjvfpPN] 文件与目录 .... 参数&#xff1a; -c &#xff1a;建立一个压缩文件的参数指令(create 的意思)&#xff1b; -x &#xff1a;解开一个压缩文件的参数指令&#xf…

java tcp端口复用_windows server tcp端口重用问题

我们的服务器端和客户端都是windows的Serverclient(192.168.1.11)发送socket连接到windows服务端&#xff0c;windows处理完数据返回报文后就close掉了(server端是java写的)。比如client使用12345端口发送数据到server的7777端口。client收到server的fin包后完成4次挥手后clien…

计算机视觉基础(11)——语义分割和实例分割

前言 在这节课&#xff0c;我们将学习语义分割和实例分割。在语义分割中&#xff0c;我们需要重点掌握语义分割的概念、常用数据集、评价指标&#xff08;IoU&#xff09;以及经典的语义分割方法&#xff08;Deeplab系列&#xff09;&#xff1b;在实例分割中&#xff0c;需要知…

使用vs2010+WCF发布json数据,ExtJS4.0进行调用

花了近一天的时间调试解决&#xff0c;希望对有相同需要的朋友有帮助&#xff1a;1、新建一空网站,添加一个web页面webform1.aspx&#xff0c;添加ExtJs相关引用<link href"ExtJs4.0.7/resources/css/ext-all.css"rel"stylesheet"type"text/css&qu…

mysql的 怎么处理_本人的MySQL连接到底怎么处理才好……

RT&#xff0c;代码本人直接贴了……using MySql.Data.MySqlClient;namespace WindowsFormsApplication1{public class ClassConnect{MySqlConnectionStringBuilder cs new MySqlConnectionStringBuilder();cs.Server “127.0.0.1”;cs.Port 3306;cs.Database “user_syste…

js解密

js解密http://www.cfansblog.com/tools/jsEncode.html转载于:https://www.cnblogs.com/skillCoding/archive/2012/02/03/2336700.html

java qq通信_结对博客(Java通信项目QQ)

项目名称&#xff1a;JAVA通信项目——QQ成员&#xff1a;邢正&#xff0c;郑振兰项目需求&#xff1a;QQ每个人都用过&#xff0c;它的意义就不再讲了。之所以选择做QQ事因为它有挑战性&#xff0c;涉及到通信、传输、swing等各种知识。(好吧我不装逼了&#xff0c;说的直白点…

类的序列化[Serializable]

简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中&#xff0c;先将对象的公共字段和私有字段以及类的名称&#xff08;包括类所在的程序集&#xff09;转换为字节流&#xff0c;然后再把字节流写入数据流。在随后对对象进行反序列化时&#xff0c;将创建出与原…

java深度克隆大数据_Java - 深拷贝技巧

先让我描述一下问题&#xff1a;我在某Action(struts2.x)-A中写了一个功能P,以当前用户的某个标识F 1时需要走这个功能,而且这个功能因某些原因已经侵入到了其他一些method中。顺便一提,A中获得当前用户session的method已经被父类封装好了。然后我的代码已经push上去了,第二天…

Android中的Handler, Looper, MessageQueue和Thread

前几天&#xff0c;和同事探讨了一下Android中的消息机制&#xff0c;探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西&#xff0c;但对于其内部原理的了解&#xff0c;能使我们更加容易、合理地架构系统&#xff0c;并避免一些低级错误。 对…

java平面_java知识点整理

一、http和tcp/ip的区别&#xff1f;http是应用层协议&#xff0c;主要解决如何封装数据。tcp/ip则是传输层协议&#xff0c;主要解决数据如何在网络中传递。web应用使用http协议作为应用层协议来封装成http文本协议&#xff0c;然后使用tcp/ip做传输层协议将信息发布到网络上。…

设计模式—适配器模式

一、概念 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four Adapter模式的宗旨&#xff1a;保留现有类所提供的服务&#xff0c;向客户提供接口&#xff0c;以满足客户的期望。 对象适配…

android UI进阶之实现listview的分页加载

上篇博文和大家分享了下拉刷新&#xff0c;这是一个用户体验非常好的操作方式。新浪微薄就是使用这种方式的典型。 还有个问题&#xff0c;当用户从网络上读取微薄的时候&#xff0c;如果一下子全部加载用户未读的微薄这将耗费比较长的时间&#xff0c;造成不好的用户体验&…

java stringutils_Java 笔记----- StringUtils 拼接字符

import org.apache.commons.lang3.StringUtils;StringUtils 提供了 join 方法用来 按照自定义的拼接符拼接join实现源码&#xff1a;感兴趣的可以看看public static String join(Iterator> iterator, String separator) {// handle null, zero and one elements before buil…

EJB分布式对象实现方式描述

在Java RMI中要求所有的参数传递和返回类型是JAVA的基本类型或实现Serilizable的对象。串行化对象通过值传递&#xff08;又名拷贝传递&#xff09;&#xff0c;而不是引用传递。这意味着在某一层中串行化对象的更新并不自动影响到其它的对象。 对于EJB对象而言&#xff0c;它由…

iis5.0+php5.0+mysql5.0配置完全手册_IIS5.0+PHP5.0+MySQL5.0配置完全手册

IIS5.0PHP5.0MySQL5.0配置完全手册环境:windows Xp sp2 IIS5.0 MySQL 5.0 PHP 5.0.4 使用PHPWind3.0论坛程序使用PHPmyadmin2.6.3适合初学者的配置1.首先是安装IIS5.0xp默认下是没有安装IIS的"控制面板"> "添加删除程序"> "添加\删除windows组件…

蓝桥杯java提交格式_2019第十届蓝桥杯JAVA省赛B组

B 不同子串题目描述一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如&#xff0c;字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab&#xff0c;一共 7 个。 注意在计算时&#xff0c;只算本质不同的串的个数。请问&#xff0c;字符串0100110…

浅析Java与C#的事件处理机制(转)

Java与C#的事件处理都是实现了事件源-事件响应者机制&#xff0c;但又不完全相同。Java实现的是一种事件源与事件响应者两级实体对象方式&#xff0c;这里的事件响应者也是事件监听者&#xff0c;而C#实现的是一种事件源-代理-事件响应者三级实体对象方式。下面就这两种方式来具…