我最近一直在研究lambda表达式,有些特定的功能我一直想学习,但就是无法理解。假设我的代码中有以下逻辑:
现在,我希望将整个操作抽象成一个处理程序方法,这样我就可以做到这一点:
List<A> foo; // assuming this is populated
string[] bar = foo.Select<A,string>(x => x.StringProperty).ToArray<string>();
现在,我希望将整个操作抽象成一个处理程序方法,这样我就可以做到这一点:
string[] bar = MakeArray<A,string>(foo, x => x.StringProperty);
int[] foobar = MakeArray<A,int>(foo, x => x.IntegerProperty);
我该如何编写这个方法的主体呢?我预见将签名声明为以下内容:
U[] MakeArray<T,U>( /* some lambda magic? */ ) where T : IEntity {}
但我不知道如何指定我期望一个lambda表达式作为方法参数,并且这将如何转换为方法的主体。
有人能向我展示如何创建上面的MakeArray()
函数吗?我相信一旦我看到它是如何完成的,我就能从那里继续。
编辑
正如评论中指出的那样,MakeArray()
需要对IEnumerable<>
进行引用。已更新以反映此更改。
string[] bar = foo.Select(x => x.StringProperty).ToArray();
- Quintin RobinsonIEnumerable<T>
或IList<T>
。这样就不需要这些了。另外,MakeArray
需要引用 foo 吗? - BlueRaja - Danny Pflughoeft