У меня есть массив строк с именем Products, и я работаю над анонимными методами (Lambda Exprs.) и Linq. Итак, сначала я написал;
var resultSet1 = from p in products
where p.StartsWith("M")
orderby p descending
select p;
Затем я расширяю его с помощью лямбда-выражений;
var resultSet2 = products
.Where(p => p.StartsWith("M"))
.OrderByDescending(p => p)
.Select(p => p);
Затем я расширяю его с помощью анонимных методов;
var resultSet3 = products
.Where(delegate(string p) { return p.StartsWith("M"); })
.OrderByDescending(delegate(string p) { return p; })
.Select(delegate(string p) { return p; });
Затем я расширяю его с помощью Manual Methods и Func‹> Delegates;
Func<string, bool> filterFunc = new Func<string, bool>(Filter);
Func<string, string> orderAndSelectFunc = new Func<string, string>(OrderAndSelect);
var resultSet4 = products.Where(filterFunc).OrderByDescending(orderAndSelectFunc).Select(orderAndSelectFunc);
static bool Filter(string p) { return p.StartsWith("M"); }
static string OrderAndSelect(string p) { return p; }
Потом я застрял. Итак, мой вопрос; Могу ли я немного расширить это, заменив делегат Func‹> обычными делегатами? Или что-то вроде того?