Лямбда-выражения C # в качестве аргументов функции

Я недавно был занят погружением в лямбда-выражения, и есть некоторые специфические функции, которые я хотел изучить, но просто не мог понять.

Предположим, что в моем коде есть следующая логика:

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 {}

, но я не знаю, как указать, что я ожидаю лямбда-выражение в качестве аргумента метода, и как это точно переводится в тело метода.

Может Кто-нибудь покажет мне, как создать функцию MakeArray () выше? Я почти уверен, что как только я увижу, как это делается, я смогу взять это оттуда.

EDIT

Как указано в комментариях, MakeArray () нужна ссылка на IEnumerable <> . Обновлено, чтобы отразить это.

18
задан Richard Neil Ilagan 22 March 2011 в 19:49
поделиться