请解释一下这个代码.Oftype()。我搜索GG已经有两个星期了,但是有一点结果。所以我不能完全理解。我的代码:
String source = "Car2Bike6Ship6Bike3Car64Ship56"
var result = Regex
.Matches(source, "(?<name>[A-Z_[ạảàáãăắẳằặẵâấẩầậẫóỏòọõôốổồộỗơớởờợỡéèẻẹẽêếềểệễúùủụũưứừửựữíìỉịĩýỳỷỵỹđ_ẠẢÀÁÃĂẮẲẰẶẴÂẤẨẦẬẪÓỎÒỌÕÔỐỔỒỘỖƠỚỞỜỢỠÉÈẺẸẼÊẾỀỂỆỄÚÙỦỤŨƯỨỪỬỰỮÍÌỈỊĨÝỲỶỴỸĐ_a-z]+)(?<size>[0-9]+)")
.OfType<Match>()
.Select(match => new
{
    name = match.Groups["name"].Value,
    size = int.Parse(match.Groups["size"].Value),
})
.GroupBy(value => value.name)
.Select(chunk => String.Format("{0}: {1}",
   chunk.Key, String.Join(" + ", chunk.Select(item => item.size))));
        String report = String.Join(Environment.NewLine, result);
        report = report.Replace(": 0", ":");
        report = report.Replace(": +", ":");
        Console.Write(report);
        Console.ReadLine();发布于 2017-04-12 02:48:03
OfType是非泛型IEnumerable的一种扩展方法,使其成为IEnumerable<T>.在代码示例中使用它的原因是让您在match.Groups中调用Select。
因为Matches方法返回实现IEnumerable的MatchCollection,所以IEnumerable<Match> LINQ表达式不需要使用Cast<T>或OfType<T>来让跟随的LINQ语句使用来自正在枚举的集合的实际类型的类型信息。
https://stackoverflow.com/questions/43359326
复制相似问题