如何使用Lambda表达式创建扩展方法 [英] How to create extension methods with lambda expressions

查看:54
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆