You can also use the MathKernel object to do your computations, which has more overhead, but has more power and convenience also. Your code would look like this:
Wolfram.NETLink.MathKernel kernel = new Wolfram.NETLink.MathKernel();
kernel.Compute("x/.NSolve[" + equation + ",x]");
My favorite properties of MathKernel are
1) The computation result, stored in the object kernel.Result. This is an object, and you will generally want to cast it to a string in order to get the text result you seek. A good practice for doing this is to wrap your Mathematica command in "ToString[ ... , InputForm]", so that it will be nicely formatted.
2) The string array kernel.Messages, which is exactly what you were asking for. For successful computations, this array is generally length 0.
3) The image array kernel.Graphics, which will return any graphics results from commands, e.g. Plot.