LINQ中的高级查询

LINQ查询方法:

1、Method Syntax查询方法方式:主要利用System.Linq.Enumerable类定义的拓展方法和Lambda表达式方法进行查询。

2、Query Syntax查询语句方式。

查询语句和查询方法的关系:编译器负责在编译时将查询语句便以为查询方法,大部分的查询方法都有对应的查询语句姓氏。一般情况下,我们会使用查询语句+查询方法的混合方式进行查询。

常见的高级查询方法分为:聚合、排序、分区、集合、生成。

Ⅰ聚合类:

<span style="font-size:18px;">            //高级方法---聚合类
            //数组数据persons
            int[] arr = { 234, 36, 47, 25, 14, 467, 251235, 135, 35 };
            //聚合类
            Console.WriteLine("arr的最大值" + arr.Max());
            Console.WriteLine("arr的最小值"+ arr.Min());
            Console.WriteLine("arr的平均值" + arr.Average());
            Console.WriteLine("arr的数组元素个数"+ arr.Count());
            Console.WriteLine("arr的总和"+ arr.Sum());
</span>

Ⅱ排序类:

<span style="font-size:18px;">            //数组数据persons
            int[] arr = { 234, 36, 47, 25, 14, 467, 251235, 135, 35 };
            //排序类
            var result = arr.OrderBy(p=>p.ToString().Substring(0,1));

            result.Print();
</span>

Print方法代码:

<span style="font-size:18px;">        public static void Print(this IEnumerable<int> ie)
        {

            IEnumerator<int> result = ie.GetEnumerator();
            Console.WriteLine("\n------------------------\n");
            while(result.MoveNext())
            {
                Console.WriteLine(result.Current);
            }
            Console.WriteLine("\n------------------------\n");
        }
</span>

用查询语句排序:

<span style="font-size:18px;">            var result = arr.OrderBy(p => p.ToString().Substring(0, 1));</span>

用2次排序:

<span style="font-size:18px;">            var result = arr.OrderBy(p=>p.ToString().Substring(0,1)).ThenBy(p=>p);//2次排序
</span>

Ⅲ分区类

<span style="font-size:18px;">            //分区类(分页的时候用到的会很多)
            var result = arr.Skip(3).Take(3);
            result.Print();
</span>

代码为:

<span style="font-size:18px;">            var result = arr.SkipWhile(p => p > 4);//方法体部分是该linq语句不再往后执行的条件。

            result.Print();
</span>
<span style="font-size:18px;">            var result = arr.SkipWhile(p => p > 4);//方法体部分是该linq语句不再往后执行的条件。当第一次聚到条件成立时立即取出
</span>

查询为空就对了。

<span style="font-size:18px;">            var result = arr.TakeWhile(p => p > 4);//方法体部分是该linq语句提取数据的条件,当第一次遇到条件不成立的情况就停止执行。
            result.Print();
</span>

查询结果:

Ⅳ集合类

<span style="font-size:18px;">            //集合类
            var result = arr.Distinct();
            result.Print();
</span>

Ⅴ生成类--静态方法

<span style="font-size:18px;">            var result = System.Linq.Enumerable.Range(10,50);
            result.Print();
</span>

这个运行的结果是从10到59的50个数。

时间: 2024-10-18 12:24:28

LINQ中的高级查询的相关文章

LinQ To Objects 高级查询方法

什么是LinQ To Objects? 用一个例子解释,首先定义一个数组,查询数组中的最大值: int[] arr = { 123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8, 434 }; 旧的方法: int max=0 ; foreach(int a in arr) { if(a>=max) max=a; } Console.Write("最大值:"+ max); LinQ To Objects方法: Console.Wri

Linq 中 表连接查询

1 public void Test(){ 2 3 var query = from a in A join b in B on A.Id equals B.Id into c 4 from d in c.DefaultIfEmpty() 5 select d; 7 } Linq 中 表连接查询,布布扣,bubuko.com

mysql中的高级查询

mysql中的高级查询 以前学习的查询语法:   select 字段名 from 表名 where 条件   其实,查询的语法变化很多: 1. select 可以查询表达式, 表达式就是 运算符+操作数. 比如 1 + 1   2 * 3  2-1+5*9   Math.random() * 1; 可以看出,数据库中,字符串+字符串不是拼接,而是计算加法, 试一试,拿着'1' + 'a123'. 扩充,如果非要让两个字符串是拼接,咋办? 2. 表的别名     其实列也可以起别名:   3. d

LINQ中的一些查询语句格式

LINQ的基本格式如下所示:var <变量> = from <项目> in <数据源> where <表达式> orderby <表达式> LINQ 基本子句from查询子句——基础后面跟随着项目名称和数据源示例代码如下:var str = from lq in str select lq; 其中select语句指定了返回到集合变量中的元素是来自哪个数据源的 from查询子句——嵌套查询可以在from子句中嵌套另一个from子句即可,示例代码如下

MyBatis和elementui中的高级查询和分页

前台 我们需要发送请求和带入参数 有了这两个属性过后需要在data中添加 这个属性是和方法平级的 整个页面 <template> <section> <!--工具条--> <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> <el-form :inline="true" :model="

mongo中的高级查询之聚合操作(distinct,count,group)

1.distinct的实现: db.consumerecords.distinct("userId"):键值去重  类似于mysql中的 select distinct userId from consumerecords db.consumerecords.distinct("userId",{act:"charge"}):过滤之后去重,类似于mysql中的select distinct userId from consumerecords w

linq 中的分组查询

直接看代码: //一个字段分组 var data1 = from a in query group a by a.Name into b select new { Total = b.Sum(c=>c.BrowseRealCount), Id = b.Select(c=>c.Id) }; //多个字段分组,可以使用匿名类方式 var data2 = from a in query group a by new { a.Name, a.Summary } into b select new {

LinQ中合并、连接、相交、与非查询

LinQ中Union合并查询:连接不同的集合,自动过滤相同项:延迟.即是将两个集合进行合并操作,过滤相同的项 var cities = (from p in mylinq.System_Places where p.PID == place select p).Union( from q in mylinq.System_Places where q.Parentid==place select q ); LinQ中的Concat连接查询:连接不同的集合,不会自动过滤相同项:延迟. (from 

MongoDB高级查询详细

前言 前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦.如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 前奏:启动mongdb数据库服务,并进入shell界面 > cmd > cd C:\Program Files\MongoDB\bin  --进入mongdb安装文件的bin目录下. > net start mongoDB;  --开启mongoDB数据库服务 > mongo   --进