【发布时间】:2016-07-08 14:28:03
【问题描述】:
【问题讨论】:
-
你想问为什么我们可以使用
Regex类的静态方法,为什么使用点来访问Regex类的方法/属性? -
是的,在 MDSN 上:var wordQuery = from word in words。但我的情况是“正则表达式”类。
【问题讨论】:
Regex类的静态方法,为什么使用点来访问Regex类的方法/属性?
Regex.Matches(string, string) 返回一个实现ICollection 和IEnumerable 的MatchCollection 实例。所以你不能直接使用 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());
【讨论】: