Absolutely. In the first case, the projection and filtering will be done in series, and only then will anything be parallelized.
In the second case, both the projection and filtering will happen in parallel.
Unless you have a particular reason to use the first version (e.g. the projection has thread affinity, or some other oddness) you should use the second.
EDIT: Here's some test code. Flawed as many benchmarks are, but the results are reasonably conclusive:
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;
class Test
{
static void Main()
{
var query = Enumerable.Range(0, 1000)
.Select(SlowProjection)
.Where(x => x > 10)
.AsParallel();
Stopwatch sw = Stopwatch.StartNew();
int count = query.Count();
sw.Stop();
Console.WriteLine("Count: {0} in {1}ms", count,
sw.ElapsedMilliseconds);
query = Enumerable.Range(0, 1000)
.AsParallel()
.Select(SlowProjection)
.Where(x => x > 10);
sw = Stopwatch.StartNew();
count = query.Count();
sw.Stop();
Console.WriteLine("Count: {0} in {1}ms", count,
sw.ElapsedMilliseconds);
}
static int SlowProjection(int input)
{
Thread.Sleep(100);
return input;
}
}
Results:
Count: 989 in 100183ms
Count: 989 in 13626ms
Now there's a lot of heuristic stuff going on in PFX, but it's pretty obvious that the first result hasn't been parallelized at all, whereas the second has.