答案 0 :(得分:0)
Regex.Matches(string, string)
会返回MatchCollection
实例,该实例会实现ICollection
和IEnumerable
。因此,您无法直接使用LINQ,因为System.Linq.Enumerable
中的LINQ扩展方法需要IEnumerable<T>
(通用版本differences)。
这就是使用Enumerable.OfType
的原因。这将返回IEnumerable<Match>
,因此您现在可以使用LINQ。而不是OfType<Match>
他也可以使用Cast<Match>
。
一般情况下,您可以将Linq-To-Objects
用于实现IEnumerable<T>
的任何类型,即使使用String
也是如此,因为它实现了IEnumerable<char>
。一个小例子,它创建了一个字典及其出现的字典:
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());
回答问题的.dot部分。 LINQ基本上由许多扩展方法组成,所以你也可以像任何其他方法一样调用它们,你可以使用一行:
Dictionary<char, int> charCounts = "Sample Text".GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count());