c# - 如何在 C# 4 中对 T 执行动态 where lambda?

标签 c# linq func

如何在此方法中使用 Lambda 表达式作为参数并在 where 子句中使用它?

一直在阅读有关 Func、动态和表达式树的内容,但不知道如何执行此操作。

问题是我不知道类型 T,也不知道调用者想要返回什么。 我怎样才能在 C# 4.0 中做到这一点? 如果有一个让我入门的例子就太好了 - 谢谢。

这是我想要的一个经过高度简化的示例。

static public List<T> Match(string startfilelocation, ???)
{
    var filelist = Directory.GetFiles(startfilelocation, "*.*", SearchOption.AllDirectories);
    return filelist.Where(???);
}

谢谢。

最佳答案

指定 List<string>作为返回类型,使用 Func<string, bool>键入参数,然后输入 ToList将结果转为列表的方法:

static public List<string> Match(string startfilelocation, Func<string, bool> filter) {
  var filelist = Directory.GetFiles(startfilelocation, "*.*", SearchOption.AllDirectories);
  return filelist.Where(filter).ToList();
}

示例:

List<string> files = Match(folder, s => s.Contains("candy"));

关于c# - 如何在 C# 4 中对 T 执行动态 where lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137403/

相关文章:

c# - 我怎样才能创建一个 WPF 样式,以便所有图像控件上都有一个 MouseDown(click) 事件?

c# - 从 id 属性获取 xml 节点值 C#

sqlalchemy - 对查询中的字段求和

ios - 文本字段作为平均函数的输入

c# - lambda WHERE 子句中的空值

java - RxJava函数式编程: how to call anonymous function with appropriate arguments

c# - 在 C# 中捕获 SQL 异常的最佳实践

c# - MVC 生成的 Bootstrap 表没有响应

c# - 从非托管 C++ 到 C# 的回调有效,但仅在调试器中有效

c# - 如果索引已存在,如何根据索引加入列表并合并成员