C#lambda表达式作为函数参数

我最近一直在忙着研究lambda表达式,并且我有一些特定的function,我一直想学习,但似乎无法做出正面或反面。

假设我的代码中有以下逻辑:

List foo; // assuming this is populated string[] bar = foo.Select(x => x.StringProperty).ToArray(); 

现在,我想将整个操作抽象为一个处理程序方法,以便我可以这样做:

 string[] bar = MakeArray(foo, x => x.StringProperty); int[] foobar = MakeArray(foo, x => x.IntegerProperty); 

我将如何编写该方法的主体? 我预见签名就像:

 U[] MakeArray( /* some lambda magic? */ ) where T : IEntity {} 

但我不知道如何指定我期望lambda表达式作为方法参数,以及它如何准确转换为方法体。

任何人都可以告诉我如何创建上面的MakeArray()函数? 我很确定,一旦我看到它是如何完成的,我就可以从那里拿起它。

编辑

正如评论中指出的那样, MakeArray()需要对IEnumerable的引用。 更新以反映这一点。