在Directory.EnumerateFiles或Directory.GetFiles中使用Take()

时间:2013-03-18 15:06:34

标签: c# .net foreach parallel.foreach

在Directory.EnumerateFiles或Directory.GetFiles中允许使用.take()吗?

我有这个并且有效

    Parallel.ForEach(Directory.EnumerateFiles(sourceFolder, "*", 
               SearchOption.AllDirectories), file =>
    {
         //DO SOMETHING

    });

我只想在示例100文件中执行循环。所以:

    Parallel.ForEach(Directory.EnumerateFiles(sourceFolder, "*",
              SearchOption.AllDirectories).Take(100), file =>
    {
         //DO SOMETHING

    });

但这个周期没有像我预期的那样被记录100次。

为什么?

1 个答案:

答案 0 :(得分:5)

是的,这样做绝对没问题。它会将结果限制为EnumerateFiles返回的前100个文件。如果没有100个文件,它将执行该块100次......这只是一个限制因素。