目前我正在创建一个接受参数的扩展方法。使用下面的示例,如何使用 lambda 表达式对其进行转换?
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 与普通方法参数相比有何优缺点?
Thanks
更改示例以使用 lambda 表达式的一种方法是使用过滤器。
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);
这给您带来的最大好处是灵活性。而不是使用基于日期的过滤进行计算的方法。您有一个具有灵活过滤方法的方法来计算百分比。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)