【发布时间】:2015-03-12 15:11:20
【问题描述】:
我有一个名为 Products 的字符串数组,我正在研究匿名方法 (Lambda 表达式) 和 Linq。 所以我先写了;
var resultSet1 = from p in products
where p.StartsWith("M")
orderby p descending
select p;
然后我用 Lambda 表达式扩展它;
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 代表来扩展它吗?或者类似的东西?
【问题讨论】:
标签: c# linq delegates func anonymous-methods