Word count by LINQ
===

i need to count word by LINQ. here is the code below which i use to count word in long string data but this not very efficient.

            public static int WordCount(string haystack, string needle)
           {
            if (needle == null)
            {
                return 0;
            }
            string[] source = haystack.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',', '*', '-' }, StringSplitOptions.RemoveEmptyEntries);
            var matchQuery = from word in source
            where word.ToLowerInvariant() == needle.ToLowerInvariant()
            select word;
            int count=matchQuery.Count();
            return count;
           }

Suppose i have string like 

    Geo Prism GEO 1995 GEO* - ABS #16213899 HGEO-
if i try to find GEO in the above sentence then my routine not being able give count the way i want.

   i want count should return **4**. suggest how to customize the above routine. thanks