private string geoInfo = @"(GPRMC,094810.00,A,0905.52005,N,00728.55781,E,000.0,000.0,150911,04.0,W,A*17OK)";
List<string> geoInfoList = geoInfo.Split(',').ToList<string>();
int ndx = geoInfoList.IndexOf("N");
Okay, now you are going have to pull strings out of the 'geoInfoList' and do the right thing to convert them to double, float, or integer values, or whatever is required for your application.
Why did I convert the String Array produced by using 'Split' to a generic List<string> ? So I could use the handy 'IndexOf' operator to find a given string, as shown above: if I know the position of "N," I know the next item in the List is the latitude, for example.
Of course you could just use the simple array of strings produced by 'Split.'
If I knew my data was always in a 'fixed format,' so that I could always rely, to use your string as an example, on the sixth entry (at index #5) in the split-into-array-of-strings being the value for 'Latitude, then I wouldn't use convert to a List<string>, because I wouldn't need to use IndexOf() to locate specific data.