1.闲言碎语

由于项目的需要接触到Linq,刚开始有些不适应,好多概念都很模糊。不过经过一段时间的摸索,慢慢地对Linq有了一个更加深入的了解。在此记录一下备忘。

     2.查询表达式语法

执行Linq有两种方式,一种是方法形式eg:names.Contains('K');,另一种就是查询表达式eg:var query=from n in names select n; 下面用代码来详细解释。

string[] fruitName = { "Apple", "Pear", "Cherry", "Banana", "orange" };
IEnumerable<string> query = from f in fruitName
where f.Contains("a")
orderby f.Length
select f.ToUpper();
foreach (var str in query) {
Console.WriteLine(str);
}

查询变量:简单来说就是保存查询的变量但不是查询结果,它是一个可以枚举的类型,也就是说可以用IEnumberable或var类型保存查询结果。只有在foreach它的时候才返回查询结果。用上面的code来说query就是一个查询变量

查询表达式:查询表达式由一组用类似于 SQL 或 XQuery 的声明性语法编写的子句组成。每个子句又包含一个或多个 C# 表达式,而这些表达式本身又可能是查询表达式或包含查询表达式。--摘自MSDN

查询表达式语法:查询表达式必须以 from 子句开头,并且必须以 select 或 group 子句结尾。在第一个 from 子句和最后一个 select 或 group 子句之间,查询表达式可以包含一个或多个下列可选子句:where、orderby、join、let 甚至附加的 from 子句。还可以使用 into 关键字使 join 或 group 子句的结果能够充当同一查询表达式中附加查询子句的源。---摘自MSDN

查询表达式关键字详解:

from:它是查询表达式的开头,同时它又定义了范围变量(Range Variable)和指定数据源。

范围变量类似于 foreach 语句中的迭代变量,eg:

foreach(string n in names){
}

上面的code中n就相当于范围变量。要注意的一点是范围变量指向的序列会随着查询子句执行而变化eg:

string[] fruitName = { "Apple", "Pear", "Cherry", "Banana", "orange" };
IEnumerable<string> query = from f in fruitName//f是我们定义的范围变量
where f.Contains("a")//f直接来自fruitName数组
orderby f.Length//f来自Where过滤后的序列
select f.ToUpper();//f来自orderby排序后的序列
foreach (var str in query) {
Console.WriteLine(str);
}

let:用来在保持范围变量的同时引入新的查询变量。eg:

string[] fruitName = { "Apple", "Pear", "Cherry", "Banana", "orange" };
IEnumerable<string> query = from f in fruitName
let v=Regex.Replace(n,”[aeiou]","")
where v.Length>
select f;//f在这里任然有效
foreach (var str in query) {
Console.WriteLine(str);
}

select:用来指示输出查询结果的类型,用于数据转换(或投影)

group:用来对数据分组,还sql中的分组概念一样。

where:用来过滤符合条件的序列项

orderby:根据指定的只来排序(升序或降序)

join:对两个序列中键匹配的元素进行连接,常用的连接有

  • 内部联接

  • 分组联接

  • 左外部联接

group:按照指定的键值进行分组

into:在查询完以后可以继续查询

子查询:嵌套from查询,和sql子查询概念一样。

大家一看就能明白这些关键字就是为Linq to sql而准备的

Linq之查询表达式语法详解的更多相关文章

  1. C#3.0新增功能09 LINQ 标准查询运算符 02 查询表达式语法

    连载目录    [已更新最新开发文章,点击查看详细] 某些使用更频繁的标准查询运算符具有专用的 C# 语言关键字语法,使用这些语法可以在查询表达式中调用这些运算符. 查询表达式是比基于方法的等效项更具 ...

  2. Hadoop Hive sql语法详解

    Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...

  3. Thymeleaf3语法详解和实战

    Thymeleaf3语法详解 Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp.Jsp应该是我们最早接触的模版引擎.而Freemarker工 ...

  4. Xpath语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  5. Java Spring cron表达式使用详解

    Java Spring cron表达式使用详解   By:授客 QQ:1033553122 语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek ...

  6. Java8的Stream语法详解(转载)

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  7. [持续交付实践] pipeline使用:语法详解

    一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直 ...

  8. Java 8系列之Stream的基本语法详解

    本文转至:https://blog.csdn.net/io_field/article/details/54971761 Stream系列: Java 8系列之Stream的基本语法详解 Java 8 ...

  9. spring AspectJ切入点语法详解 记录以便查阅

    AspectJ切入点语法详解 6.5.1  Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spri ...

随机推荐

  1. Leetcode049. Group Anagrams

    //hashmap implement with STL class Solution { public: vector<vector<string>> groupAnagra ...

  2. 雷兽的数据库CAP乱谈之(一)阐述

    今天有人问我cap,找了https://my.oschina.net/lilw/blog/169776这片文字, 下面是cap那篇文字的解释: 所谓CAP理论,即: Cosistency       ...

  3. Qt中QObject中的parent参数

    今天写了一个小程序,验证了带参的构造函数中参数parent的作用. 在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化.我采用了两种初始化方式,一种是带参 ...

  4. js动态生成JSON树

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. [微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程

    [微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程   在朋友圈看到一款疯转的H5小游戏,想要copy,什么?只能在微信里打开?小样,图样图森破,限制了oauth.微信浏览器内打开, ...

  6. 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。

    转自:http://blog.sina.com.cn/s/blog_48964b12010157p0.html 配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息 ...

  7. IOS懒人笔记应用源码

    这个源码是懒人笔记应用源码,也是一个已经上线的apple应用商店的应用,懒人笔记iOS客户端源码,支持语音识别,即将语音转化成文本文字,所用语音识别类库为讯飞语音类库. 懒人笔记是一款为懒人设计的笔记 ...

  8. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(五)-- Filter

    在上一篇里,介绍了中间件的相关内容和使用方法.本篇将介绍Asp.Net Core MVC框架的过滤器的相关内容和使用方法,并简单说明一下与中间件的区别. 第一部分.MVC框架内置过滤器 下图展示了As ...

  9. Ajax的get请求向服务器请求数据五步骤?

    如下: ①创建ajax对象 ②建立http请求 ③发送http请求 ④设置ajax对象状态改变的回调函数 ⑤判断ajax状态是否等于4,做相应的业务逻辑

  10. reader,字符流

    1. public class Demo1 { public static void main(String[] args) throws IOException { File file = new ...