如何使用Lambda表达式创建扩展方法 [英] How to create extension methods with lambda expressions
本文介绍了如何使用Lambda表达式创建扩展方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当前,我正在创建一个接受参数的扩展方法.使用以下示例,如何使用lambda表达式进行转换?
Currently i am creating an extension method that accepts parameters. Using the below example, how could one convert this using lambda expressions?
public static decimal ChangePercentage(this IEnumerable<Trade> trades, DateTime startDate, DateTime endDate)
{
var query = from trade in trades
where trade.TradeTime >= startDate
where trade.TradeTime <= endDate
orderby trade.TradeTime descending
select trade;
return (query.First().Value - query.Last().Value) / query.First().Value * 100;
}
使用lambda与常规方法参数相比,优点/缺点是什么?
What are the pro/cons using lambda vs normal method parameters?
谢谢
推荐答案
可以将示例更改为使用lambda表达式的一种方法是使用过滤器.
One way you could change the sample to use lambda expressions is to use a filter.
public static decimal ChangePercentage(this IEnumerable<Trade> trades,
Func<Trade,bool> pred)
{
var query = from trade in trades
where pred(trade);
orderby trade.TradeTime descending
select trade;
return (query.First().Value - query.Last().Value) / query.First().Value * 100;
}
someTrades.ChangePercentage(x => x.TradeDate >= startDate && x.TradeTime <= endDate);
这给您带来的最大好处就是灵活性.而不是使用基于日期的过滤进行计算的方法.您有一种方法,可以使用灵活的过滤器方法来计算百分比.
The biggest pro this gives you is flexbility. Instead of having a method which does date based filtering for calculation. You have a method with a flexible filter method for calculating percentages.
这篇关于如何使用Lambda表达式创建扩展方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文