Func<> 获取参数信息

2024-04-02

如何获取传入参数的值Func<>C# 中的 Lambda

IEnumerable<AccountSummary> _data = await accountRepo.GetAsync();
string _query = "1011";
Accounts = _data.Filter(p => p.AccountNumber == _query);

这是我的扩展方法

public static ObservableCollection<T> Filter<T>(this IEnumerable<T> collection, Func<T, bool> predicate)
{
        string _target = predicate.Target.ToString();
        // i want to get the value of query here.. , i expect "1011"

        throw new NotImplementedException();
}

我想得到的值query在 Filter 扩展方法内分配给_target


如果你想获取参数,你必须传递表达式。通过传递“Func”,您将传递编译后的 lambda,因此您无法再访问表达式树。

public static class FilterStatic
{
    // passing expression, accessing value
    public static IEnumerable<T> Filter<T>(this IEnumerable<T> collection, Expression<Func<T, bool>> predicate)
    {
        var binExpr = predicate.Body as BinaryExpression;
        var value = binExpr.Right;

        var func = predicate.Compile();
        return collection.Where(func);
    }

    // passing Func
    public static IEnumerable<T> Filter2<T>(this IEnumerable<T> collection, Func<T, bool> predicate)
    {
        return collection.Where(predicate);
    }
}

测试方法

var accountList = new List<Account>
{
    new Account { Name = "Acc1" },
    new Account { Name = "Acc2" },
    new Account { Name = "Acc3" },
};
var result = accountList.Filter(p => p.Name == "Acc2");  // passing expression
var result2 = accountList.Filter2(p => p.Name == "Acc2");  // passing function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Func<> 获取参数信息 的相关文章

随机推荐

  • jQuery:有没有一种方法可以自动向动态生成的 HTML 添加属性,就像 live() 处理事件一样?

    我有一个如下所示的列表 ul li a href example url 1 Link 1 a li li a href example url 2 Link 2 a li li a href example url 3 Link 3 a
  • 项目上线时Manager Bean不返回

    我有一个使用 JPA 的 JSF 项目 我这样做 从 mysql 数据库检索一些数据 然后将数据绘制在图表中 Locally works pretty fine as you can see here So I deploy the pro
  • 解决Tomcat中的Bind异常

    自一年以来 我们一直在 Apache Tomcat 8 0 36 服务器上运行 Java 8 Web 应用程序 从过去的几天来看 有时当我们重新启动 Tomcat 服务器时 应用程序无法运行 日志显示 Https 端口的地址绑定异常 我尝试
  • 有什么可能的方法从沙盒应用程序运行 clang 编译器吗?

    好的 这个问题相当简单 我有一个沙盒 OSX 应用程序 我希望用户能够编译一些 C 代码 无论他输入什么 但每当我尝试拨打电话时 usr bin env clang the path to the source c 我在日志中收到以下错误
  • 插入按钮没有将数据插入数据库,并且根本没有给出错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 这是包含插入方法的类 我先填充字段 然后创建属性 然后插入方法 然后转到另一个类并创建插入按钮 请帮忙 根本没有给出错误 usin
  • 如何请求Android用户通过点击启用蓝牙?

    from http developer android com guide topics connectivity bluetooth html http developer android com guide topics connect
  • 仅使用 HTML 和 CSS 创建下拉按钮?

    是否可以仅使用 HTML 和 CSS 创建一个带有下拉菜单的按钮 a Take Action a ul li action 1 li li action 2 li ul 单击链接时 悬停也可以 但首选单击 我希望显示 ul actions
  • 抽象声明中没有参数名称?

    这是 F 中抽象成员的典型声明 abstract member createEmployee string gt string gt Employee 您定义参数类型 但不定义它们的名称 没有名字 在实现接口时如何知道每个参数是什么 换句话
  • 如何使用 Kotlin 就地过滤列表?

    在 Java 中 我可以使用以下代码从列表中删除项目 private void filterList List
  • 消除录音曲目中当前播放曲目的声音

    我希望使用远程 IO 进行音频录制和播放 我对核心音频的理解很差 因为我遵循惊人的音频开源 http theamazingaudioengine com 到目前为止 我可以使用相同的代码进行录制和播放 现在我尝试通过麦克风录制并通过 iPh
  • 特定接口上的 TCP/IP 连接

    我想使用两个网络路由之一连接到服务器 一个人会怎样做呢 我在 Google 上搜索了很多 常见的答案是修改路由表 但这并没有什么帮助 因为目的地只有一个 IP 地址 大多数示例都具有具有单个网卡的客户端和具有多个网卡的服务器 但在本例中情况
  • Shell 正则表达式到行尾

    我有一个像这样的小例子的文件 mode dev 该文件中某处的注释中有一个 变量 我想在 Shell 脚本中使用正则表达式获取值 到目前为止我的代码 bin bash conf lt etc test conf Get the file c
  • 队列上的 IEnumerable 迭代器是否应该使项目出列

    我创建了一个自定义通用队列 它实现了通用 IQueue 接口 该接口使用 System Collections Generic 命名空间中的通用队列作为私有内部队列 示例已清除不相关的代码 public interface IQueue
  • 您应该如何从源代码控制构建数据库?

    SO 社区 wiki 上有一些关于数据库对象是否应该进行版本控制的讨论 然而 我还没有看到太多关于为数据库对象创建构建自动化过程的最佳实践的讨论 对于我的团队来说 这一直是一个有争议的讨论点 特别是因为开发人员和 DBA 在评估数据库部署自
  • 如何在 ElasticSearch 中基于正则表达式过滤令牌

    对于 ElasticSearch 查询 我们希望以不同的方式处理单词 即仅由字母组成的标记 和非单词 为此 我们尝试定义两个分析器 返回单词或非单词 例如 我们有描述五金店产品的文档 name Torx drive T9 category
  • 字符串搜索算法

    对于两种字符串搜索算法 KMP和后缀树 在什么情况下优选哪种 举一些实际的例子 如果您必须回答很多查询 例如 大海捞针是否存在 则后缀树会更好 如果您只需在另一个字符串中搜索一个字符串 而不需要执行很多次 那么 KMP 会更好 后缀树是一种
  • SwiftUI - 将 SceneKit 场景添加到 MacOS 项目

    目标 使用 UIViewRepresentable 将 SceneKit 场景添加到 SwiftUI MacOS 项目 不是 Catalyst 我做了什么 当目标是 SwiftUI iOS 时 以下代码可以正常工作 但是当目标是 MacOS
  • Node教程一对多无加载远程服务器Stream Spinner动不停

    我对在项目中使用所需的 Kurrento 很陌生 但是当我克隆 git hub 上为 Kurento 提供的教程并遵循 one2Many 调用的说明时 首先 adapter js 的软件包损坏了 因为我成功解决了它们 但之后出现了一个问题
  • 在 turfjs 中创建多个多边形的联合的最快方法是什么?

    我有这样的东西 但对于大集合来说 速度非常慢 let unionize triangles gt if triangles length 0 return null let ret triangles 0 feature triangles
  • Func<> 获取参数信息

    如何获取传入参数的值Func lt gt C 中的 Lambda IEnumerable