IEnumerable扩展方法Aggregate的用法

程序集 System.Core.dll中的System.Linq命名空间添加了许多扩展方法,看到

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)

使用这个方法去除文件名中的非法字符,一行代码就可以搞定。

用Reflector查看一下源码:

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)
{
    if (source == null)
    {
        throw Error.ArgumentNull("source");
    }
    if (func == null)
    {
        throw Error.ArgumentNull("func");
    }
    TAccumulate local = seed;
    foreach (TSource local2 in source)
    {
        local = func(local, local2);
    }
    return local;
}

  实际使用:

private static readonly char[] InvalidFileNameChars = new[]
                                                                  {
                                                                      '"',
                                                                      '<',
                                                                      '>',
                                                                      '|',
                                                                      '\0',
                                                                      '\u0001',
                                                                      '\a',
                                                                      '\b',
                                                                      ':',
                                                                      '*',
                                                                      '?',
                                                                      '\\',
                                                                      '/'
                                                                  };

        static void Main(string[] args)
        {
        }

        public static string CleanInvalidFileName(string fileName)
        {
            //...
            fileName = InvalidFileNameChars.Aggregate(fileName, (current, c) => current.Replace(c + "", ""));
            //...
            return fileName;
        }

  使用Lambda表达式可以使代码看起来更简洁。

posted on 2012-10-06 09:33  capad 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/clith/archive/2012/10/06/2712758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值