linq 的本质是扩展方法和委托的结合

链式 linq 和 方法级linq

  List<int> list = new List<int>() {
3,9,32,7
};
// linq 分为链式 和方法级linq
//链式的写法如下 var q = from temp in list where temp > 6 select temp; //方法级linq 如下
var q1 = list.Where(temp => temp > 6).Select(temp=>temp); //通过反编译可以看出链式linq 最终都是要翻译为方法级linq ,这点可以大伙可以自行尝试

自定义自己的linq查询


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>() {
3,9,32,7
}; //找出大于6 的数,我们很自然的会使用linq 来查询
var newList = list.Where(x => x > 6);
//linq 的本质是什么呢? linq的本质是 扩展方法和委托的结合 var newList2 = list.CustomerWhere(x => x > 6); foreach (var item in newList)
{
Console.WriteLine(item);
}
Console.WriteLine("---------------");
foreach (var item in newList2)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
} /// <summary>
/// 自定义一个扩展方法, 要点:静态类的静态方法,this 要扩展的类型 其余参数
/// </summary>
static class CustomerWhereExtension
{
public static List<int> CustomerWhere(this List<int> list, Func<int, bool> predict)
{
List<int> tempList = new List<int>();
foreach (var item in list)
{
if (predict.Invoke(item))
{
tempList.Add(item);
}
}
return tempList;
} }
}

运行结果如下

CSharp linq 的本质的更多相关文章

  1. csharp: Linq keyword example

    /// <summary> /// http://www.dotnetperls.com/linq /// </summary> public partial class Li ...

  2. C#基础提升系列——C# LINQ

    C# LINQ LINQ(Language Integrated Query,语言集成查询).在C# 语言中集成了查询语法,可以用相同的语法访问不同的数据源. 命名空间System.Linq下的类En ...

  3. entity framework 新手入门篇(1.5)-lambda表达式与linq

    在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以la ...

  4. C#学习笔记(九):LINQ和表达式树

    LINQ LINQ:语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同 ...

  5. C#的LINQ

    在过去如果我们如果需要去查询某些集合或者数组里面的某些元素,我们需要写出大量的带有筛选的遍历集合的代码,但是有了Linq之后,我们就不用写出那些冗余麻烦的遍历代码,只需要关注其中的筛选,排列的函数就可 ...

  6. LINQ 常规实践总结

    1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续两次OrderBy,后面一个有可能会打乱前面一个的排序顺序,可能与预期不符. 要实现sql中的order by word,nam ...

  7. 再次理解 C# LINQ

    语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 查询表达式(生成表达式) 1.IEnumerable<T> 查询编译为委托.如 source.Where( ...

  8. LINQ解析

    Linq 是什么? Linq是Language Integrated Query的缩写,即“语言集成查询“的意思,Linq的提出就是为了提供一种跨各种数据源统一查询方式,主要包含四种组件:Linq t ...

  9. Linq的左链接

    地址:https://docs.microsoft.com/en-us/dotnet/csharp/linq/perform-left-outer-joins ①创建两张表和一些基础数据做我们的测试 ...

  10. Linq Introduce

    Linq学习网址: http://www.java2s.com/Code/CSharp/LINQ/CatalogLINQ.htm

随机推荐

  1. StrFormatter 字符串格式化

    package com.hopedove.processserver.util; /** * 字符串格式化 * * @author ruoyi */ public class StrFormatter ...

  2. CF960G

    首先我们考虑$n$的情况,显然以$n$为分界线可以将整个序列分成两部分,就像这样: . 那么我们考虑:在这个东西前面才会有前缀最大的统计,在这个东西后面才会有后缀最大的统计 这样就剩下了$n-1$个元 ...

  3. 关于jmeter性能测试小记的12345

    jmeter性能测试: linux环境命令:后台启jar包:nohup java -jar *.java &前台启jar包:java -jar 后台执行jmeter命令,打印控制台输出在log ...

  4. MAC 关闭office自动更新提示

    ①.先进入到 /Library/Application Support/Microsoft/ 文件夹 (/Library/Application Support/Microsoft/) 点击 前往 - ...

  5. JAVA——》微信分账

    做一个推荐分享的功能,场景:每推荐成功奖励推荐人一定的推荐金. 这里,我就用调用了微信支付分账接口.链接:https://pay.weixin.qq.com/wiki/doc/api/allocati ...

  6. homework1(1)

    来自桂林理工大学物联网工程2019届的April 没参与过什么比赛项目但是课程学习能力还行,主要是快速学习之后很快就会忘记,接下来应该好好的总结并熟练记住运用知识完成对生活等各种的实践. 对课程的希望 ...

  7. centos7 升级gcc

    #安装gcc yum install -y gcc-c++ autoconf automake ​ #centos7 默认的 gcc 默认是4.8.5,版本小于 5.3 无法编译,需要先安装gcc新版 ...

  8. tail 命令 没有内容输出,记录一种解决

    1. 没有内容输出的命令: tail - f /test/platform/jtimer.log 控制台: 2. 当切换到此文件的当前路径后才有: 使用: tail - f jtimer.log

  9. CentOS7 使用Mariadb 安装 hive

    前提:已成功安装hadoop ──────────1. MariaDB安装 ──────────第一步 参照以下内容安装MariaDBhttps://www.linuxprobe.com/chapte ...

  10. create_generated_clock 的用法

    本文转载自:create_generated_clock_亓磊的博客-CSDN博客_create_generated_clock 文章目录 参数source和master_clock区别 create ...