Why am I getting:
The method \'Where\' cannot follow the method \'Select\' or is not supported. Try writing the query in terms of supported methods
Why don't you just move the where so it is before the projection? It will result in a single query being executed which filters and projects:
XrmServiceContext.CreateQuery().Where(p => p.FirstName == "John").Project().To().First();