全文共1424字,预计学习时长6分钟

图源:unsplash

LINQ有一种神奇的魅力,它能在艰难时刻帮助笔者保持积极状态。如果你不太了解它,我敢肯定,看过本文之后,明天你就会开始使用它。

本文将告诉你,LINQ凭什么被誉为有史以来最好的技术。

免责声明:笔者主要是在C#上使用该技术,但是它至少有针对Python和PHP的包装器/副本,因此其一般原理在其他语言中也适用。

LINQ是什么?

许多强大的技术很难解释,但LINQ可以:使用LINQ,便可以对常规编程集合(如列表或数组)运行SQL查询。

图源:LINQ

它的强大强大功能从何而来呢?现在来看一个简单的LINQ语句:

isExample= listOfObjects.Where(x => x.practicalUse == null).Any()
//Or in short as reSharper will tell you:
isExample = listOfObjects.Any(x => x.practicalUse == null)

要了解LINQ,首先需要理解lambda函数。

Lambda函数较为独特,表示为x =>,如果以前从未使用过该函数,可能需要一些时间来理解。它基本上是一个内联函数声明,能够引用被调用列表中的各个元素。

本质上,它是Any()和x的组合,无非有一个更长的包装器而已,用于检测循环检查列表中元素是否满足必需的参数。如果是,则返回true。

所以说真的,LINQ只是披着华丽外衣的一串循环函数。

图源:unsplash

为什么LINQ远胜于其他技术?

那么就从最简单的理由开始,请再次仔细看一下上面的示例:

varisExample = listOfObjects.Any(x => x.practicalUse == null)

现在将其写作常规代码:

var isExample;foreach(element in list){if(element.practicalUse != null){returntrue;}}

可以将其写得简短一些(尽量写作内联if函数),但是这也表明了编写这样的函数是多么令人烦躁-尤其是在可能经常需要这些函数的情况下。

最令人反感的莫过于在混乱的代码中,程序员可能无从得知代码中到底发生了什么。必须按住Control键并单击才能跳到另一个函数中,查看它的作用,然后返回。

另一个重要的作用是,它可以将这些语句彼此链接在一起:

varsingleExample = listOfObjects.Where(x => x.practicalUse == null).Take(5)

.Take(5)看起来微不足道,但却很重要。它允许仅返回查询列表中的前五个结果。重写这样的内容需要花费很长时间,当尝试提出计数器变量和for循环中断时,甚至需要在Google上编辑或浪费大量精力思考。

还可以只返回第一个结果:

list.First(x=> x.stupidCondition)

将一个列表的子集转换为另一个相同类型的子集也很容易,但这也可能需要一些时间来重写。这甚至是编程初学者面试中一个很受欢迎的问题。

最后一点是:实现LINQ基本上不费吹灰之力。你只需创建这个库并使用它。在五分钟之内,你就可以开始使用它了,这很神奇。

图源:unsplash

它几乎可以用于任何集合,比如列表或数组。在最糟糕的情况下,须对IQueriable类型进行一些类型转换,此时,你所选择的IDE甚至可以有所帮助。

笔者常常会怀疑那些“完美软件”只不过是“营销”罢了,但使用了LINQ多年,它真的当之无愧。

应用实例

接下来,笔者还想谈谈日常生活中的一些应用示例,LINQ总能以各种方式提供助力。

从队列中获取任务:

tasknextOpenTask = openTasks.FirstOrDefault(x => !x.inProgress &&!x.errorState).OrderByDescending(x => x.dateOfEntry)

很快就完成了,这太方便了!

从列表中只返回一个属性(内联类型转换):

stringname = customers.Select(x => x.name)

获取最早或最新的未完成任务:

tasks.Max(x=> x.dateOfEntry)

“最好的技术”LINQ,实至名归!快来pick它吧,入股不亏!

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

入股不亏!LINQ凭什么被誉为最好的技术?相关推荐

  1. vs code 开发企业级python_入股不亏!VS Code中最好用的Python扩展插件

    全文共1913字,预计学习时长5分钟 图源:unsplash Visual Studio Code无疑是最好用的开放源码编译器,而Python是其主要支持的语言,相应的微软扩展组件也毫不逊色,&quo ...

  2. 用心整理10个宝藏APP,涨薪刚需,入股不亏

    Hello,今天我们来说说APP,我想大家的手机里应该有不少于10个的APP吧.今天给大家推荐的这波,一个宗旨,应急.实用.无广告,围观一下有没有你需要的吧! 01Ccleaner 大家对这款软件应该 ...

  3. 【Java知识体系】JVM深入浅出,图解易懂,赶紧收藏,入股不亏

    大家好!我是未来村村长,就是那个"请你跟我这样做,我就跟你这样做!"的村长

  4. 拼图游戏(JAVA)超详细!入股不亏

    哎,最近被这个搞的头晕眼花的,烦死了!!! 不多解释了,代码注释很详细(毕竟写了好几天还熬了个大✌夜),不会欢迎私聊(虽然本人JAVA真的拉) MainJFrame.java//主窗体(package ...

  5. 年薪可达30-50w!潜力职业“入股不亏”,今晚直播等你来!

    黑马程序员视频库 播妞QQ号:3077485083 传智播客旗下互联网资讯.学习资源免费分享平台 2020年3月,三部门(人力资源社会保障部.人社部与市场监管总局.国家统计局)联合向社会发布了包括全媒 ...

  6. [译]如何在C#中调试LINQ查询

    LINQ是我在C#中最喜欢的功能之一.它让代码看起来更漂亮美观.我们得到了一个易于编写和理解的简洁函数式语法.好吧,至少我们可以使用LINQ方法的语法风格. LINQ很难进行调试.我们无法知道该查询内 ...

  7. C#参考:Linq 概述

    Linq (Language Integrated Query,语言集成查询),是微软公司提供的一项新技术,它能够将查询功能引入到.NET 3.5 所支持的编程语言中,例如C#,Visual Basi ...

  8. 云和恩墨战略入股红象云腾(REDOOP),红象云腾发展进入快车道

    在中国信息技术产业高速发展的浪潮之下,信息产品需要更安全开放的分布式大数据软件来支撑海量数据的存储和计算需求.基于云和恩墨和红象云腾多年数据行业长期投入和案例积累,经过多方努力,云和恩墨战略入股红象云 ...

  9. LINQ学习之旅——最后一站LTX之基础和编程接口所包含类的简介

    对LINQ TO SQL的内容讲解将告一段落,下面我们进入LINQ学习之旅的最后一站"LTX",即LINQ TO XML.当前XML技术在应用开发中显得越来越重要,已成为各类数据交 ...

  10. Datawhale组队学习周报(第021周)

    本文总结了本周(07月05日~07月11日)Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 25 期组队学习 ...

最新文章

  1. 蓝桥杯基础训练——Fibonacci数列
  2. WCF+Nhibernate 序列化的问题。
  3. mysql打印语句_大数据挖掘—(八):scrapy爬取数据保存到MySql数据库
  4. stm32之PVD可编程电压监测器(掉电保存数据)
  5. 安装好Pycharm后如何配置Python解释器简易教程(configure python interpreter)
  6. 学习android操作系统,学习Android手机操作系统笔记总结
  7. “约见”面试官系列之常见面试题第三十一篇之vue-router得守卫(建议收藏)
  8. ppz css栅格框架
  9. 测试http请求的Chrome插件:Postman插件的查找安装模拟测试 - 讲解篇
  10. 深度学习《Photo Editing》
  11. 六元均匀直线阵的各元间距为_小间距led显示屏的封装方式有哪些?本文带你了解!...
  12. npm run build失败
  13. Hello HarmonyOS,HarmonyOS鸿蒙实现HelloWorld应用开发E2E体验
  14. 第九章 限制性图谱和正则表达式
  15. 【优化算法】混合蛙跳优化算法(SFLA)【含Matlab源码 1472期】
  16. 三菱PLC控制器FX3GA USB驱动 程序下载
  17. gst 测试摄像头命令
  18. meebo FireFox add-on
  19. 从删库到跑路,论运维的自我修养
  20. asp.net 获得根文件夹在服务器上物理路径,asp.net获取网站目录物理路径

热门文章

  1. 深入理解操作系统实验——bomb lab(secret_phase)
  2. Flink Event Time , Processing Time 和 Ingestion Time概念
  3. 车辆调度管理系统-设计分享
  4. Arduino六足机器人
  5. 2021年保育员(中级)考试及保育员(中级)考试总结
  6. 输入一字符串,内有数字和非数字字符,例如:A123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……统计有
  7. 关于st-link与stm32f103c8t6连接
  8. 如何用计算机测量图片景深,用比较仔细的测量搞清楚“景深”(1.实测景深与公式比较)...
  9. 思科路由器命令大全(一)
  10. html js 生成缩略图,js实现产品缩略图效果