LINQ

Linq查询知识点详解

Linq标准查询语法格式

var data = from  变量  in  集合对象 

            where  布尔表达式

   orderby  排序字段  descending|ascending

            select  变量;

解释:

select:提取要查询的数据                 where:筛选满足条件的元素   

from 变量:该变量指代集合中的单个元素   in:从哪里筛选元素

orderby:排序                          descending:降序  ascending:升序

注意:where是可选的,如果不加where则表示筛选所有元素.

示例代码:

使用Linq进行数据查询的条件

数据源(in 后面的集合对象)必须直接或间接继承自IEnumerable<T>

或者说:只要数据源继承自IEnumerable<T>,我们就可以使用Linq从它里面检索数据

Where关键字

筛选满足条件的元素,where关键字后面一定要跟布尔表达式

Where后面的布尔表达式可以很简单,也可以是复杂的表达式.

注意:

注意from关键字后面可以出现多个where表达式,这些表达式之间是并且的关系

Select关键字

Select关键字用于提取要查询的数据.

Select后面可以直接跟from后面的变量;也可以跟一个匿名类型.

Count()方法

Count(expression<Func<T, bool>>)

解释:T代表Lambda表达式中的参数部分,bool代表Lambda表达式部分为布尔类型

Count方法用于获取满足条件的记录数量(有多少个满足条件的记录)

Max()和Min()

Max(Expression<Func<T, K>>)和Min(Expression<Func<T, K>>)

Max:求最大值    Min:求最小值

First()和FirstOrDefault()

First(Expression<Func<T, bool>>)

FirstOrDefault(Expression<Func<T, bool>>)

两个方法都是从集合中筛选满足条件的第一个元素.

区别:当没有从集合中筛选到满足的条件的元素时,First将会报错,FirstOrDefault则不会报错.

Average()方法

该方法用于计算平均值

Linq的联合查询

将两个集合进行关联,然后从这两个集合中提取所需要的数据.

语法格式:

var  data  =  from  变量1  in  集合1

               from  变量2  in  集合2

               where  变量1.属性  ==  变量2.属性

               select  new { ...  ...}

提示:可以将N个集合进行关联(N>=2)

示例代码:

Sum()

Sum(Func<T, K>)

其中T为参数的类型,K为返回值的类型.

Sum()方法用于对数据进行求和运算.

OrderBy()和OrderByDescending()

这两个方法用于实现对数据进行排序(升序和降序)

group by分组

分组的标准语法:

var  data  =  from  变量1  in  集合对象

               group  变量1  by  变量1.属性  into  变量2

               select  变量2;

注意:使用group by分组后,将不能使用之前的变量1,需要通过into关键字定义一个新的变量2.新的变量指代的是分组后的每一组.

关于分组的示例

其他:

在进行数据查询时,.net framework为我们提供了2套方案:

一种是使用标准的linq查询语法=>

(from\in\select\where\orderby\ascdening\descending\group\by\into\join);

另一种方案是使用扩展方法=>

(Where\Select\FirstOrDefault\Count\Sum\Average\Max\Min\OrderBy\OrderByDescending\GroupBy\Last\LastOrDefault)

当然,我们也可以将2种混合起来使用.

 ending......

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

C# ref与out关键字解析

简介:ref和out是C#开发中经常使用的关键字,所以作为一个.NET开发,必须知道如何使用这两个关键字. 1、相同点 ref和out都是按地址传递,使用后都将...

1906
来自专栏java一日一条

Java 解惑:Comparable 和 Comparator 的区别

Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢?今天来了解一下。

832
来自专栏浪淘沙

关于数组的算法

3.给定一个数组和一个数num,把小于num的书放在数组左边,大于num的书放在数组右边

1216
来自专栏cnblogs

ECMAScript5.1的运算符、类型转换总结

一、运算符优先级 从高到低 运算符 说明 () 圆括号     . [] new(带参数列表) 字段访问、数组索引、new(带参数列表) ()...

1757
来自专栏程序员互动联盟

【编程基础】Java Comparator接口的使用

在实际编程中我们经常会用到集合或者数组,有的时候你需要对这个集合中的元素就行排序,那这个时候就用到了Comparator接口,先看一下接口的原型: public...

3459
来自专栏跟着阿笨一起玩NET

C# 中的 Out 和 Ref 及Params 参数

781
来自专栏liulun

30分钟泛型教程

一、泛型入门: 我们先来看一个最为常见的泛型类型List<T>的定义 (真正的定义比这个要复杂的多,我这里删掉了很多东西) [Serializable] pub...

1936
来自专栏xiaoxi666的专栏

【模板小程序】 十进制大数相乘(正数、负数、0均可),包含合法性检查

1443
来自专栏编程之旅

Swift学习笔记(二)

963
来自专栏菩提树下的杨过

linq to sql的多条件动态查询(下)

借助老外写的一个扩展表达式的类,可以把上篇中的代码写得更优雅 这是PredicateBuilder的源文件 public static class Predic...

2249

扫码关注云+社区

领取腾讯云代金券