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.WriteLine("arr的最大值:"+ arr.Max());

由此可以看出,LinQ To Objects是一种新的处理集合的方法,相对于旧方法中必须编写指定如何从集合检索数据的复杂的foreach循环,而LinQ方法只需要编写描述要检索的内容的声明性代码。

LinQ To Objects高级查询方法

<span style="font-size:18px;">    //LinQ To Objects查询高级方法
    //数组数据persons
    int[] arr = {123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8,434};</span>

聚合类:

    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());

排序类

   var result = arr.OrderBy(p => p.ToString().Substring(0, 1));  //按首字母排序
   var result = arr.OrderBy(p => p.ToString().Substring(0, 1)).ThenBy(p => p);  //2次排序

   var t = arr.OrderBy(p => p.ToString().Substring(0, 1));   //对数组进行
   var result = from p in t orderby  p descending select p;  //降序排列

分区类

  var result = arr.Skip(2).Take(3);跳过2个值取后面的3个值
  var result = arr.Skip(3); //跳过3个值取后面所有的值
  var result = arr.SkipWhile(p => p > 4); //方法体部分是该LingQ语句不在往后执行的条件,当第一次遇到条件成立时取剩下的所有数据
  var result = arr.TakeWhile(p => p > 4); //方法体部分是该LinQ语句提取数据的条件,当第一次遇到条件不成立的情况时停止执行

集合类

  var result = arr.Distinct();  //把数组中重复的记录过滤掉

生成类

  var result= System.Linq.Enumerable.Range(10,50);  //生成连续的数列
  var result = System.Linq.Enumerable.Repeat(DateTime.Now, 10); //生成10个相同的日期

总结

通过这些小小的例子,对新的知识从不知道到了解,初步学习LinQ ToObjects是什么和怎么用,更加深入的理解需要更加深入的学习和实践!

时间: 2024-12-22 02:10:37

LinQ To Objects 高级查询方法的相关文章

Linq——高级查询方法入门

一,Lambda表达式 lambda表达式刚开始用的时候还很不习惯,因为以前用惯了那种先foreach,再逐个判断的麻烦形式,刚开始用lambda都会在脑子里转一下,变成自己让自己舒服的格式,但是写过几行代码后,就会喜欢上这种形式,首先,它比较简洁,其次,和LINQ组合起来用感觉非常贴近SQL: 二,LINQ高级查询内容简介 LINQ的写法有两种,一种是语句形式,一种是方法形式,但是语句形式支持的功能貌似不足方法强大,所以,有些时候写语句形式的LINQ表达式还要加入方法.在编译的时候,也是将语句

LinQ—高级查询方法

对于高级查询方法,主要分为五大类,详情下图: [Distinct]:  避免重复值出现,也就是如果有两个数字2,那么使用集合类可以单一出现 首先我们来写一个数组,方便举例: // 数组数据persons int[ ] Arr = { 25, 36, 25, 2, 3, 9, 55, 581, 21, 15, 44, 78, 96 }; 聚合类 Console.WriteLine("arr的最大值:" + Arr.Max()); Console.WriteLine("arr的最

LINQ中的高级查询

LINQ查询方法: 1.Method Syntax查询方法方式:主要利用System.Linq.Enumerable类定义的拓展方法和Lambda表达式方法进行查询. 2.Query Syntax查询语句方式. 查询语句和查询方法的关系:编译器负责在编译时将查询语句便以为查询方法,大部分的查询方法都有对应的查询语句姓氏.一般情况下,我们会使用查询语句+查询方法的混合方式进行查询. 常见的高级查询方法分为:聚合.排序.分区.集合.生成. Ⅰ聚合类: <span style="font-siz

oracle数据库的高级查询方法 多表联合查询

oracle查询 一,简单查询 order by 1,2 select t.sno, t.sname, t.ssex from STUDENT t order by 1,2,3 group by 增强版 SELECT p.toma, p.ptype, SUM(p.lastcou) FROM product p GROUP BY rollup(p.toma, p.ptype) 二,高级查询(多表连接查询) 笛卡尔积的概念: 所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合

LINQ to Objects系列(2)两种查询语法介绍

LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查询语法的简单示例 一个LINQ查询既可以使用查询表达式实现,也可以用查询方法实现,还可以同时组合两种查询.下面是一个简单的示例,代码如下. namespace LINQDemo3 { class Program { static void Main(string[] args) { int[] nu

查询表达式和LINQ to Objects

查询表达式实际上是由编译器“预处理”为“普通”的C#代码,接着以完全普通的方式进行编译.这种巧妙的发式将查询集合到了语言中,而无须把语义改得乱七八糟 LINQ的介绍 LINQ中的基础概念 降低两种数据模型之间的阻抗失配过程中,遇到的一个问题就是,通常会涉及创建另一个模型来作为桥梁 序列 它通过IEnumerable和IEnumerable<T>接口进行封装 序列和其他集合数据结构最大的区别:当你从序列读取数据的时候,通常不知道还有多少数据项等待读取,或者不能访问任意的数据项——只能是当前这个

2019年 7月16日 Linq高级查询

1.Linq 语言集成查询 它允许使用SQL查询数据库的方式来查询数据集合 可以从数据库 程序对象集合以及XML文档中查询数据 2.Linq有两种写法 一种是form查询的方法 一种是where拉姆达表达式的写法 3.当List是引用类型时候 不建议使用Contains 4.Action<>有两个参数 第一个是参数 第二个是返回值 5.Linq to Objects 主要负责对象的查询 6.LLinq to XML 主要负责XML的查询 7.Linq to ADO.NET 主要负责数据库的查询

几种查询方法(lambda Linq Enumerable静态类方式)

1.需要一个数据源类: using System; using System.Collections.Generic; namespace Linq { public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } public class Data { public static List<Student> studentLi

LINQ中in的实现方法-LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4)

如果用in是字符串类型无问题,可以直接这样用 var result = SNFService.Instance.ModuleService.GetList(UserInfo).Where(entity => entity.DeletionStateCode == 0 ).Where(entity => urls.Contains((entity.NavigateUrl == null ? "" : entity.NavigateUrl).ToLower())).OrderB