如何组合两个表达式: result = exp1(exp2);

2024-04-23

作为主题,在这种情况下如何将两个表达式组合成一个表达式:

Expression<Func<IEnumerable<T>, IEnumerable<T>>> exp1;
Expression<Func<IEnumerable<T>, IEnumerable<T>>> exp2;

Expression<Func<IEnumerable<T>, IEnumerable<T>>> result = ???; // exp1(exp2)

这实际上只是结合两者的一种特定形式Expression<Func<T, T>>价值观。下面是这样做的一个例子:

using System;
using System.Linq.Expressions;

public class Test
{
    public static Expression<Func<T, T>> Apply<T>
        (Expression<Func<T, T>> first, Expression<Func<T, T>> second)
    {
        ParameterExpression input = Expression.Parameter(typeof(T), "input");
        Expression invokedSecond = Expression.Invoke(second,
                                                     new Expression[]{input});
        Expression invokedFirst = Expression.Invoke(first,
                                                    new[]{invokedSecond});
        return Expression.Lambda<Func<T, T>>(invokedFirst, new[]{input});
    }

    static void Main()
    {
        var addAndSquare = Apply<int>(x => x + 1,
                                      x => x * x);

        Console.WriteLine(addAndSquare.Compile()(5));
    }
}

你可以写ApplySequence如果您想:

    public static Expression<Func<IEnumerable<T>, IEnumerable<T>>>
         ApplySequence<T>
            (Expression<Func<IEnumerable<T>, IEnumerable<T>>> first,
             Expression<Func<IEnumerable<T>, IEnumerable<T>>> second)
    {
        return Apply(first, second);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何组合两个表达式: result = exp1(exp2); 的相关文章

  • LogicalOperationStack 与 .Net 4.5 中的异步不兼容吗

    Trace CorrelationManager LogicalOperationStack允许具有嵌套逻辑操作标识符 其中最常见的情况是日志记录 NDC 它是否仍然可以使用async await 这是一个简单的例子 使用LogicalFl
  • 托管 C++ 和 AnyCPU

    我有一个托管 C dll 我从 C 项目中引用它 C 项目将被编译为 AnyCPU 有没有办法编译 32 位和 64 位版本的托管 C dll 然后告诉 C 项目在运行时根据正在运行的体系结构加载正确的版本 让 AnyCPU dll 与 C
  • 如何保存具有多个缩进设置的XmlDocument?

    我需要保存一个XmlDocument以适当的缩进归档 Formatting Indented 但有些节点及其子节点必须排在一行 Formatting None 从那时起如何实现这一目标XmlTextWriter接受整个文档的设置 在 Ahm
  • VC++ 代码 DOM 可以从 VS 插件访问吗?

    Visual Studio IntelliSense for VC 包括 完整 EDG C 解析器 http www edg com location c frontend 英特尔和其他公司也使用 由于插件可以访问 C Code DOM 如
  • SQL 注入在 winform 中有效吗?

    我正在用 C 制作一个 Windows 软件 我读过关于sql injection但我没有发现它适用于我的应用程序 SQL 注入在 winform 中有效吗 如果是的话如何预防 EDIT 我正在使用文本框来读取用户名和密码 通过使用 tex
  • 如何使用 lambda 表达式调试stream().map(...)?

    在我们的项目中 我们正在迁移到 java 8 并且正在测试它的新功能 在我的项目中 我使用 Guava 谓词和函数来过滤和转换一些集合Collections2 transform and Collections2 filter 在这次迁移中
  • 使用抽象类型的反射从表中获取实体

    好的 我有一个名为 Product 的抽象类 我有 3 个表 分别称为 Items Kits 和 Packages 它们实现了 Product 产品具有公开对象主键的公共属性 也就是说 我有一个传递产品的表格 我想将该产品从新的数据上下文中
  • 数字签名的值错误

    我正在尝试为文本块创建数字签名 虽然我似乎能够创建签名 但它与我们的测试用例所需的数字测试签名不同 我正在使用的代码如下 X509Store store new X509Store StoreName My StoreLocation Cu
  • LINQ Group By 投影成非匿名类型?

    我有以下 LINQ 示例 var colorDistribution from product in ctx Products group product by product Color into productColors select
  • 如何在 C# 中搜索 Excel 文件

    我正在使用的代码 private void OpenExcelFile Excel Application exlApp new Microsoft Office Interop Excel Application if exlApp nu
  • .NET csc 和 Mono mcs 的兼容性

    我知道 NET 和 Mono 是二进制兼容的 但给定一组源代码 csc 和 mcs 会生成完全相同的 100 相同的二进制 CLI 可执行文件吗 人们能够判断可执行文件是用 csc 还是 mcs 编译的吗 很多东西在规范中没有完全定义 或者
  • 一次强制执行一个异步可观察对象

    我正在尝试使用以下方法将一些 TPL 异步集成到更大的 Rx 链中Observable FromAsync 就像这个小例子一样 using System using System Reactive Linq using System Thr
  • 发起TCP连接关闭后如何接收数据?

    TCP 允许一侧发出 FIN 并让另一侧在结束其一侧的连接之前响应一些数据 我如何使用 NET 来实现这一点TcpClient 看来我必须使用Close发出FIN 但之后我不能再打电话Client Receive since Client被
  • 在 ASP.NET MVC 中向 Actions 发送多个参数

    我想向 ASP NET MVC 中的操作发送多个参数 我还希望 URL 看起来像这样 http example com products item 2 代替 http example com products item aspx id 2
  • 如何使用 SqlDataReader 返回和使用 IAsyncEnumerable

    请看下面两种方法 第一个返回一个IAsyncEnumerable 第二个试图消耗它 using System Collections Generic using System Data using System Data SqlClient
  • CvMat 和 Imread 与 IpImage 和 CvLoadImage

    使用 OpenCv 2 4 我有两个选项来加载图像 1 CvMat and Imread 2 IpImage and CvLoadImage 使用哪一个更好 我尝试将两者混合并最终出现段错误 imread返回一个Mat not CvMat
  • 如何使构造函数只能由基类访问?

    如果我想要一个只能从子类访问的构造函数 我可以使用protected构造函数中的关键字 现在我想要相反的 我的子类应该有一个构造函数 该构造函数可以由其基类访问 但不能从任何其他类访问 这可能吗 这是我当前的代码 问题是子类有一个公共构造函
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • C# - 使用 Linq 获取 Attribute 的属性

    我有一个属性 它本身就有属性 我想访问这些属性之一 布尔值 并检查它是否正确 我能够检查属性是否已设置 但这就是全部 至少对于 linq 来说是这样 属性 public class ImportParameter System Attrib
  • 是否有将二进制数据打包成 UTF-16 字符串的标准技术?

    在 NET中 我有任意二进制数据存储在byte 例如图像 现在 我需要将该数据存储在string 旧 API 的 注释 字段 有没有标准技术packing将此二进制数据转换为string 我所说的 打包 是指对于任何相当大且随机的数据集 字

随机推荐

  • 如何在子进程期间和之后执行操作

    我有一个调用子程序的程序 当子程序使用 Popen 运行时 我需要禁用运行按钮并启用停止按钮 但是 由于Popen打开了一个新进程 因此程序完成后应该打印的内容会立即打印出来 我尝试添加self p communicate after Po
  • 跨浏览器的 CSS 行高问题

    我有一些 CSS line height 18px 的按钮控件 有些是输入控件 type button 另一些是样式化为像输入控件一样显示为按钮的锚点 在 FF3 6 12 IE8 中 它们显示相同的高度 但在 IE7 中 锚点的高度较短
  • Android 在检查并请求权限后继续

    我知道关于检查和请求许可以及处理他们的回复有很多问题得到解答 我对此很清楚 但我有点困惑的是 如果我们正在检查两个不同事物的相同权限 那么在授予权限后我们如何继续任务 例如 我有 recycleView 在我的适配器中我有两个按钮的代码 一
  • Xcode 9/Swift 4 AVCaptureMetadataOutput setMetadataObjectTypes 使用 availableMetadataObjectTypes

    似乎有很多与我遇到的问题类似的问题 AVmetadata 随着 swift 4 xcode 9 的变化 https stackoverflow com questions 46286332 avmetadata changes with s
  • 如何修改之前的 git 提交

    我已经做了 2 次 git 提交 git log commit 9613e1e84b42aeef645977272d310250339cf0e0 commit 01f8699be310f9a56a40835b48a922a879bba24f
  • android - Geocoder.getFromLocationName() 在 ICS 设备中不起作用

    我有两个设备 一是HTC 野火 S另一个是HTC 1V 我用的是Geocoder getFromLocationName 在我的应用程序中 已经成功运行在HTC 野火 S 但在HTC 1V我收到以下错误 为什么它来了 我该如何解决这个问题
  • 即使没有消费者,消费者群体仍陷入“再平衡”

    我正在使用kafka版本2 4 1 最近从2 2 0升级到2 4 1 并注意到一个奇怪的问题 即使应用程序 kafka Streams 已关闭 没有正在运行的应用程序 但消费者组命令返回状态为重新平衡 我们的应用程序作为 kubernete
  • 猫头鹰旋转木马键盘导航

    我正在寻找向 Owl Carousel 插件添加键盘导航 原始 jQuery 插件的 Github 有一个关于此主题的线程here https github com OwlFonk OwlCarousel issues 65 所以我尝试了以
  • Sphinx 文档中人类可读的迭代

    Sphinx autodoc 扁平化字典 列表和元组 使得长的几乎难以阅读 漂亮的打印格式也并不总是需要的 因为一些嵌套容器最好保持扁平化而不是列化 有没有办法显示可迭代对象as typed在源代码中 直接从源获取它 并添加一个 rst其命
  • 在事件处理程序中获取表单元素

    我想添加一个onSubmit事件所有的HTML Forms验证提交文件大小并阻止其提交javascript 问题是我没有id of the form 也没有那些file input element 现在 我怎样才能获得所需的值input 可
  • Prolog 同构图

    这里尝试解决同构图问题 作业信息 判断2个无向图是否同构 没有孤立的顶点 顶点数小于30 图的边作为谓词给出 即 e 1 2 f 1 2 我正在尝试使用以下方法 对于每对边 即图 1 和图 2 中的每条边 Try to bind the v
  • PHP 标头重定向 301 - 有何影响?

    I have example com 如果用户登录 它应该自动加载example com option X其中 X 是用户的预定义选择 所以 我在顶部这样做index php header Location option X 但是 如果用户
  • 将字符串转换为带时区的日期

    我有日期字符串2017 01 03T10 45 00 000 02 00我需要将其转移到类似的东西2017 01 03 10 45 00 0200 let formatter DateFormatter formatter dateForm
  • 查找 AAR 依赖项

    我正在使用编译成 AAR 文件的第 3 方 SDK 我想使用此 AAR 为 Xamarin 创建绑定库 如何找到此 AAR 使用的依赖项 如果我使用 Java 反编译器 我可以看到许多类都有针对第 3 方 SDK 的导入语句 因此我 有时
  • ruby on Rails 3.1 将 .swf 移动到资产管道?

    是否可以将 SWF 文件移动到资源管道中 如果可以 如何做到这一点 我建议将它们放在一个名为的文件夹中app assets flash 将此文件夹添加到您的资源路径中 config assets paths lt lt Rails root
  • 贪心聚类算法速度提升

    我正在尝试在 python 中实现一个非常简单的贪婪聚类算法 但很难优化它的速度 该算法将采用距离矩阵 找到具有最多小于预定距离截止值的分量的列 并将行索引 具有小于截止值的分量 存储为簇的成员 簇的质心是列索引 然后 从距离矩阵中删除每个
  • 将 StarUML 图转换为 Visio 绘图

    我有一个使用 Star Uml 创建的类图 但现在的要求是将其移植到 MS Visio 是否可以将 uml 移植到具有可用 xml 信息的 vsd 提前致谢 导出为 Windows 图元文件 WMF 和增强型 Windows 图元文件 EM
  • 使用 VB.NET 循环遍历 XML 文件

    我在处理 XMl 文件时遇到问题 我想循环 使用 VB NET 该文件并提取 OrderID 元素的所有值
  • 在 Corda 中,哪些数据会发送到非验证公证服务?

    这个问题经常出现在对话中 当 Corda 交易被发送到非验证公证服务进行最终确定时 公证服务可以看到并推断出关于世界的什么 在将交易发送给非验证公证人之前 会按如下方式进行过滤 stx buildFilteredTransaction Pr
  • 如何组合两个表达式: result = exp1(exp2);

    作为主题 在这种情况下如何将两个表达式组合成一个表达式 Expression