当他们说 LINQ 可组合时,他们是什么意思?

2024-02-07

它是什么意思?为什么(如果有的话)它很重要?


这意味着您可以向查询添加其他“运算符”。这很重要,因为您可以非常有效地完成它。

例如,假设您有一个返回员工列表(可枚举)的方法:

var employees = GetEmployees();

另一种方法使用该方法返回所有管理器:

IEnumerable<Employee> GetManagers()
{
    return GetEmployees().Where(e => e.IsManager);
}

您可以调用该函数来获取即将退休的经理并向他们发送如下电子邮件:

foreach (var manager in GetManagers().Where(m => m.Age >= 65) )
{
   SendPreRetirementMessage(manager);
}

小测验:这会迭代您的员工列表多少次?答案是exactly一次;整个操作仍然只是 O(n)!

另外,我不需要为此使用单独的方法。我可以将这些步骤全部集中在一个地方编写查询:

var retiringManagers = GetEmployees();
retiringManagers = retiringManagers.Where(e => e.IsManager);
retiringManagers = retiringManagers.Where(m => m.Age >= 65);
foreach (var manager in retiringMangers)
{
    SendPreRetirementMessage();
}

一件很酷的事情是我可以在运行时更改 is,这样我就可以在一个内部包含或不包含组合的一部分。if块,这样使用特定过滤器的决定是在运行时做出的,并且一切仍然很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当他们说 LINQ 可组合时,他们是什么意思? 的相关文章

随机推荐

  • Ms Access vba 打开另一个数据库中表的数据表视图

    该语句将打开当前数据库中指定表的数据表视图 DoCmd OpenTable sTablename acViewNormal 有没有办法让另一个数据库中的表达到相同的结果 我有一个表单 可以在其中选择 Access 数据库 然后下拉菜单中会填
  • Mongodb 是否可以聚合对象?

    我正在尝试汇总本文档中的数据包总数 id ObjectId 51a6cd102769c63e65061bda capture 1369885967 packets 0 595 1 596 2 595 3 595 我能得到的最接近的是 db
  • Jythonc 失踪

    我刚刚安装了 Jython 2 5 1 我想将我的 Python 文件转换为 Java 类文件 网站上指示使用 jythonc 命令行工具 但我找不到它 有谁知道我在哪里可以找到它 基本上我想要完成的是让我的 Python 代码在浏览器中运
  • ValueError:无法处理多标签指示器和二进制的混合

    我将 Keras 与 scikit learn 包装器一起使用 特别是 我想使用 GridSearchCV 进行超参数优化 这是一个多类问题 即目标变量只能在一组 n 个类上选择一个标签 例如 目标变量可以是 Class1 Class2 C
  • PyMC - 方差-协方差矩阵估计

    我读了下面的论文 http www3 stat sinica edu tw statistica oldpdf A10n416 pdf http www3 stat sinica edu tw statistica oldpdf A10n4
  • PHPUnit 总是输出“没有执行测试!”在 MacOS 大苏尔

    当尝试跑步时anyPHPUnit 测试 我总是得到No tests executed 我的 MacOS 机器上的消息 在这台特定机器上进行重现的一个简单方法是安装一个新的 Laravel 实例并运行默认测试 composer create
  • jQuery;对于 new Image(),Chrome 图像宽度和高度 = 0

    在 DOM 加载后 我无法让 Chrome 识别图像宽度或高度 图像通过 phpThumb 脚本动态加载 调整图像大小 如果我去掉动态 url 并将其替换为图像的直接 url 我不会遇到任何问题 并且 Chrome 中一切正常 但使用动态
  • SQL 中关键字“GROUP”附近的语法不正确

    我在对语句进行分组时遇到错误 这是我的代码 DECLARE avg volume INT SELECT avg volume ISNULL AVG Total Volume 0 FROM SELECT station id DATEPART
  • 使用 ALTER 删除 MySQL 中存在的列

    如果 MySQL 表中存在某列 如何使用 ALTER 删除该列 我知道我可以使用ALTER TABLE my table DROP COLUMN my column 但是如果my column不存在 是否有替代语法来有条件地删除列 我使用的
  • Android 数据绑定:多次调用自定义绑定适配器时生成的代码中缺少返回语句

    我正在使用 android 数据绑定库和 MVVM 架构 在 xml 布局中 我定义了一个名为 viewModel 类型为 myViewModel 的变量 该布局有几个 TextInputEditText 我使用了以下自定义绑定适配器 ma
  • 检查 C++ 中 int 溢出

    我正在运行一个 C 程序 它在 for 循环中添加数字 int y 0 for int i 0 i
  • Mac Python“安装步骤失败:运行 postflight 脚本”

    我是 Python 开发新手 在尝试安装 Aptana Studio 时 我似乎搞乱了我的 Python 安装 所以我按照这里的卸载 MacPython 说明进行操作http homepages cwi nl jack macpython
  • 对于已知情况是否应该避免尝试捕获

    我有一个我知道会发生但非常罕见的案例 例如 代码每运行一万次 这种情况可能会发生一次 我可以通过一个简单的方法来检查这种情况if但是这个if会运行很多次没有用 另一方面 我可以将代码放在 try catch 块中 当发生特殊情况时 我会执行
  • 使用 str_extract_all 在 R 中运行正则表达式 正则表达式尚未实现

    我正在尝试使用正则表达式来解析使用正则表达式的文件 在 R 中使用正则表达式的大多数解决方案都使用 stringr 包 我还没有找到另一种方法 或者另一个可以使用的包 如果您有其他方法来解决此问题 那也是可以接受的 我想要完成的是获取几个由
  • HTML5 Canvas 调整大小(缩小)图像质量高吗?

    我使用 html5 canvas 元素在浏览器中调整图像大小 事实证明 质量非常低 我找到了这个 缩放 时禁用插值 https stackoverflow com questions 7615009 disable interpolatio
  • 使用 python 从电子表格中提取多个表

    我想提取一系列 Excel 电子表格的多个表 其中某些工作表可能包含多个表 以单独存储这些表 例如csv 文件 该表可能是这样的 如果我使用 pandas read excel 读取它 import pandas as pd pd read
  • 在启用共享配置的 IIS 7+ 上安装 Web Deploy

    我们有一个在 Windows 2008R2 上运行 IIS 7 5 的网络场环境 我们使用共享配置和网络存储复制 我们尝试在其中一台服务器上安装 Web Deploy v3 5 但收到一条错误消息 指出共享配置不支持 Web Deploy
  • Newtonsoft.Json 在序列化数组的中间添加省略号 (...)

    这是一个非常奇怪的行为Newtonsoft Json的序列化功能 我几乎尝试了所有方法 例如 我没有继续使用 NET Reflector 一步步完成Newtonsoft Json dll汇编的算法 Symptoms 情况如下 我有一个小的
  • 如何从 C# 代码隐藏生成 sql 脚本文件?

    如何从 C 代码隐藏生成 sql 脚本文件 脚本文件将包含create and drop数据库中存储过程的语句 如何在 C 中从 db 生成脚本并写入 sql 文件 是否可以在C 中从数据库生成表或storedproc的创建和删除语句的脚本
  • 当他们说 LINQ 可组合时,他们是什么意思?

    它是什么意思 为什么 如果有的话 它很重要 这意味着您可以向查询添加其他 运算符 这很重要 因为您可以非常有效地完成它 例如 假设您有一个返回员工列表 可枚举 的方法 var employees GetEmployees 另一种方法使用该方