c#使用Lambda Expression并行foreach来过滤文件

时间:2015-03-09 04:15:19

标签: c# linq lambda

Parallel.ForEach(Directory.GetFiles(@"c:\DataArchiver\KYEC\", "*.stdf.gz", SearchOption.TopDirectoryOnly)
                .Select(x => new FileInfo(x)).Where(x.length > 100000)
                ,file =>
            {
                Console.WriteLine(file);
            });

我遇到错误:错误2' System.Collections.Generic.IEnumerable'不包含' Where'的定义和最好的扩展方法重载' System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable,System.Func)'有一些无效的参数C:\ MteProjects \ ThreadPool \ ThreadPool \ Program.cs 70 21 ThreadPool

添加.where(x.length> 100kb)之后

1 个答案:

答案 0 :(得分:1)

你错过了x =>在where子句中:

Parallel.ForEach(Directory.GetFiles(@"c:\DataArchiver\KYEC\", "*.stdf.gz", SearchOption.TopDirectoryOnly)
                .Select(x => new FileInfo(x)).Where(x => x.length > 100000)
                ,file =>
            {
                Console.WriteLine(file);
            });