LINQ学习笔记

弗曼学习法

  • 选择一个要学习的知识点
  • 设想一下你要向别人传授这个知识点
  • 如果传授的过程中出现问题,那就重新回顾这个知识
  • 让你的讲解越来越简单易懂。
  • 我加的:不断精简传授的过程,整理出必须的要点。记录整个过程,梳理自己的整个学习过程。

参考说明:大量参考了《C#高级编程》第六版.由于水平有限,理解上可能存在错误,如有错误还请谅解和指出!


什么是LINQ

LINQ是指“语言集成查询”,其英文是指“Language Intergrated Query”。在C#中的LINQ主要是指C#支持、实现的一种查询数据语法(及数据查询功能),这种数据查询语法可以的特点是,可以使用相同的语法访问不同的数据类型。

  • 当我们说“一个LINQ”的时候,通常是指一个LINQ表达式,一个符合LINQ语法的一个表达式。

对于一个查询,如从一个List<T>集合中找出T的某个属性符合某一条件的所有元素的集合,可以使用List<T>的FindAll方法,或者直接遍历集合进行查询,也可以使用LINQ进行查询。

LINQ的基本语法规范

首先,一个LINQ查询:

 var names = new List<string> { "Nic", "Jason", "Linda", "Linus","Nic" };
 var query = from p in names
             where p == "Nic"
             select p;
  foreach(var obj in query)
  {
        Console.WriteLine(obj);//输出两行"Nic"
  }

这里的LINQ查询是从names集合中,找出所有等于"Nic"的元素。这里query是一个IEnumerable(在这里,T是string型)型变量,frome p in names是一个from子句,where p == "Nic"是一个where子句,select p是一个select子句,三个子句构成了一个LINQ表达式,一个LINQ表达式返回一个变量赋给query。我们称query是一个查询,或者说query指定了一个LINQ查询。LINQ基本语法规范:

  • 预定义关键字:from,where,orderby,join,let,descending和select,group等。
  • 表达式构成:必须以from子句开头,以select子句或者group子句结尾,在这两个子句中间,可以使用where,orderby,join,let和from子句。

使用上需要注意的一些知识点:
1.一个LINQ表达式只是定义了一个查询,并未执行具体的查询。
2.具体的查询,需要foreach访问query时才会执行。至于是不是必须用foreach访问才能执行查询,这个不清楚。

拓展语法

编译器会转换LINQ查询(即LINQ表达式),在实际进行查询是调用方法而非LINQ查询(而非执行LINQ表达式)。LINQ为IEnumerable<T>接口提供了各种拓展方法,以便用户可以在实现了该接口的任意集合上使用LINQ查询。

QA

1.LINQ是不是语法糖?使用LINQ相比于自己写遍历查询,LINQ的优势是不是只是便于查询的书写?LINQ本身是不是有什么特别的技术?LINQ的优势是什么?劣势是什么?
2.LINQ表达式调试时,如何跟进Debug?
A:不太清楚,实际试了一下,调试的时候具体的查询无法断点跟进,会提示“单步请求导致属性或运算符的自动逐过程”,然后直接跳到where子句。
未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值