[英]Passing func from method parameter into a LINQ method (generic types)
在方法的签名中,我指定一个Func,如下所示:
public void Method (Func<string, bool> func)
在LINQ中,哪种方法(来自IEnumerable)可以将Func从方法参数传递给LINQ查询? 另一个问题是,我的函数可以具有任何类型参数,因此IEnumerable / LINQ中的Method必须支持通用类型占位符。
我想写这样的东西:
// Get all elements of type T from the webpage (find is an object in an external API to look for elements in a page).
IEnumerable<T> images = find.GetAllByTagName<T>().All(func);
// Where func is a method parameter which is assigned at run time by the consumer of this API:
public void Test (Func<T, bool> func) { }
我怎样才能最好地做到这一点? 我在.NET 3.5
谢谢
将您的API签名更改为开放状态:
public void Method<T> (Predicate<T> func)
您的使用者将使用类型T关闭通用签名,并提供适当的谓词。
使用LINQ的实际方法实现将使用Joel的前述Where()
编辑:将func更改为谓词
附加编辑:
我个人将返回一个IEnumerable,表示您的结果集,该结果集受传入的谓词约束:
public IEnumerable Method<T> (Predicate<T> func)
{
return find.Where(func)
}
我正在对您要做什么进行一些假设,请告诉我这是否是您的意图。
在LINQ中,哪种方法(来自IEnumerable)可以将Func从方法参数传递给LINQ查询?
LinqToObjects的扩展方法挂在静态System.Linq.Enumerable类上。
给定您的Func签名,您可能希望此 Enumerable.Where
重载。
IEnumerable<T> Enumerable.Where<T>(this IEnumerable<T> source, Func<T, bool> filter)
在LINQ中,哪种方法(来自IEnumerable)可以将Func从方法参数传递给LINQ查询?
这个问题对我来说有点模糊。 如果要查找仅返回Func指定的匹配项的过滤器算法,请使用.Where方法:
public void Method (Func<string, bool> func)
{
return find.GetAllByTagName<T>().Where(func);
}
这是否回答你的问题? 如果没有,请说明您要做什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.