我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#中的Lambda表达式怎么优化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#中的Lambda表达式怎么优化

本篇内容介绍了“C#中的Lambda表达式怎么优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

使用Lambda表达式将会造成Lambda表达式主题部分的代码重复.

var allEmployees = new List<Employee>() { new Employee { EmployeeId = 1, Classification = 1, FirstName = "Skin", LastName = "Sen" } };  var earlyFolks = from e in allEmployees  where e.MonthlySalary < 4000 && e.Classification == 1 && e.YearsOfService > 20  select e;

若每当我们要获取一次不同工薪阶层的数据.就要重复一次.相信久经"高重用,松耦合"定律的你.肯定会想尽办法将其实现高重用,松耦合.在以前方法调用的时代.可能你会将其提炼出

private static bool LowPaidSalaried(Employee e, int salar)          {     return e.MonthlySalary < salar && e.Classification == 1;          }

这样,每次我们调用的时候,将大大减少代码量,提高可复用性.

var earlyFolks = from e in allEmployee      where LowPaidSalaried(e, 4000) && e.YearsOfService > 20      select e;

然而,很不幸的是.在这里.这种重构的方式反倒降低了其可重用性.实际上,***种方法的可重用性比第二种方法更高些.为什么呢?明明已经提炼出重用方法了.这与Lambda表达式的求值,解析以及最终的执行方式有关.

前面的<<LINQ表达式与方法调用的映射>>里说过.编译器会根据不同的LINQ Provider将Lambda表达式转换成不同的内容来执行.对于LINQ to Object.将转换成委托方法.而LINQ to SQL则是转换成表达式数.在数据迭代时才会转换成SQL语句执行.所以.若我们是在LINQ2SQL或ADO.Net EF中如此重构.编译期通过了.但运行时将出错.因为无法将你的自定义方法转换成相关的SQL语句.,因此.将抛出一个异常.

难道,Lambda表达式就只能重复再重复了吗?当然不是.在这里.延迟执行很好的将其作用发挥得淋漓精致.前面说过.延迟执行保存的并不是值,而是获取值的方法或者步骤.这样,每次我们调用完"获取"数据的方法.实际上.数据还没获得.得到的.只是一系列的"步骤".我们可以在步骤的的基础上再添加步骤.这样.就***的实现了Lambda下的重构.

public static IQueryable<Employee> LowPaidSalaried(this IQueryable<Employee> sequence)          {    return from s in sequence   where s.Classification == 1 && s.MonthlySalary < 4000                     select s;          }var allEmployees = FindAllEmployees();  var salaried = allEmployees.LowPaidSalaried();

这样.只有在需要数据的时候,才会根据"步骤"得到相应的数据.对于IEnumerable<T>,我们可以使用yield return来返回序列.

在复杂的查询中服用Lambda表达式最有效的办法就是封装封闭泛型类型的查询创建扩展方法.通过包含Lambda表达式的小方法叠加"步骤".从而达到最有效的优化.

“C#中的Lambda表达式怎么优化”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#中的Lambda表达式怎么优化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#中的Lambda表达式怎么优化

本篇内容介绍了“C#中的Lambda表达式怎么优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用Lambda表达式将会造成Lambda表
2023-06-17

C# Lambda表达式怎么用

这篇文章主要为大家展示了“C# Lambda表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C# Lambda表达式怎么用”这篇文章吧。C#语言还是比较常见的东西,这里我们主要介绍C#
2023-06-17

C++11中的lambda表达式怎么使用

本篇内容介绍了“C++11中的lambda表达式怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!可调用对象对于一个表达式e,如果可以编
2023-06-19

C++ lambda 表达式的性能优化有哪些技巧?

优化 c++++ lambda 表达式的性能技巧包括:避免创建不必要的 lambda 对象通过 std::bind 显式捕获最小的对象使用 std::move 移动捕获的变量以避免复制优化 lambda 体,避免不必要的内存分配、重复计算和
C++ lambda 表达式的性能优化有哪些技巧?
2024-04-17

C++11的lambda表达式怎么使用

这篇文章主要讲解了“C++11的lambda表达式怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11的lambda表达式怎么使用”吧!可变lambda假设有如下vector,保
2023-06-19

C# Lambda表达式树怎么实现

这篇文章主要介绍“C# Lambda表达式树怎么实现”,在日常操作中,相信很多人在C# Lambda表达式树怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# Lambda表达式树怎么实现”的疑惑有所
2023-06-17

C#3.0中Lambda表达式详解

在C#3.0中,微软给我带来的一些新特性可能是以前所有开发语言都没有的特性。这无疑大大的体现了C#3.0在开发语言中强大的优势
2022-11-15

C#怎么动态创建lambda表达式

这篇文章主要讲解了“C#怎么动态创建lambda表达式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么动态创建lambda表达式”吧!C#动态创建lambda表达式代码如下:
2023-07-05

LINQ中Lambda表达式怎么用

小编给大家分享一下LINQ中Lambda表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linq有很多值得学习的地方,这里我们主要介绍LINQ Lamb
2023-06-17

Java中Lambda表达式怎么用

这篇文章主要介绍了Java中Lambda表达式怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言Lambda表达式是java 8中包含的重要功能之一。Lambda表
2023-06-15

C#中如何使用Lambda表达式

本篇文章为大家展示了C#中如何使用Lambda表达式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C# Lambda表达式我们从“所有字符串查找包含YJingLee子字符串”说起。在C# 2.0中,
2023-06-17

C++ 中如何使用lambda表达式?

lambda 表达式是 c++++ 中的匿名函数,用于创建一次性的函数。它们通过捕获列表访问外部作用域变量,并可以接收参数和定义返回类型。lambda 表达式通常用于快速创建或在运行时传递函数。它们可以访问 lvalue 和 rvalue,
C++ 中如何使用lambda表达式?
2024-04-12

C#中Lambda表达式如何使用

本篇内容介绍了“C#中Lambda表达式如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、介绍1、"Lambda表达式"是一个特殊的
2023-06-30

如何在C#项目中创建一个Lambda表达式和Lambda表达式树

如何在C#项目中创建一个Lambda表达式和Lambda表达式树?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、表达式Lambda  表达式位于 => 运算符右侧的 la
2023-06-06

Lambda 表达式在 C++ 中有什么用途?

在 c++++ 中,lambda 表达式用作匿名函数,用途广泛:简化匿名函数的创建作为函数参数传递执行临时性处理优化算法(如指定比较函数)在 C++ 中使用 Lambda 表达式的用途和实践引言Lambda 表达式是 C++ 中强大的工具
Lambda 表达式在 C++ 中有什么用途?
2024-04-17

C++11中lambda表达式如何使用

本篇文章为大家展示了C++11中lambda表达式如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先这个lambda就是罗马字母λ,lambda表达式即λ表达式。数学上有一个概念叫λ演算,其
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录