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

552 篇文章 2 订阅

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

 

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

图源:unsplash

 

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

 

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

 

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

 

LINQ是什么?

 

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

 

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

图源: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只是披着华丽外衣的一串循环函数。

 

入股不亏!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基本上不费吹灰之力。你只需创建这个库并使用它。在五分钟之内,你就可以开始使用它了,这很神奇。

 

入股不亏!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它吧,入股不亏!

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值