As you can see in the above picture I can use Regex class like a data source when declaring it. Why is that?
And I also noticed this LinQ lines are starting with dots. How is this possible?
As you can see in the above picture I can use Regex class like a data source when declaring it. Why is that?
And I also noticed this LinQ lines are starting with dots. How is this possible?
Regex.Matches(string, string) returns a MatchCollection instance which implements ICollection and IEnumerable. So you can't use LINQ directly since the LINQ extension methods in System.Linq.Enumerable require IEnumerable<T>(the generic version, differences).
That's why Enumerable.OfType was used. This returns IEnumerable<Match>, so now you can use LINQ. Instead of OfType<Match> he could also have used Cast<Match>.
In general you can use Linq-To-Objects with any kind of type that implements IEnumerable<T>, even with a String since it implements IEnumerable<char>. A small example which creates a dictionary of chars and their occurrences:
Dictionary<char, int> charCounts = "Sample Text" // bad example because only unique letters but i hope you got it
.GroupBy(c => c)
.ToDictionary(g => g.Key, g => g.Count());
To answer the .dot part of your question. LINQ basically consists of many extension methods, so you call them also like any other method, you could use one line:
Dictionary<char, int> charCounts = "Sample Text".GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count());