我有一种可怕的感觉,这可能会降低到对我来说是个哑巴问题,因为我看不到整个森林,如果是这样的话,请提前向我道歉。但是我就是不明白为什么下面这行代码在C#中无法编译,假设myRegEx
是一个RegEx
对象,而myString
是调用Match
方法的目标字符串:
String[] results = myRegEx.Matches(myString)[0].Groups["Group1"].Captures.Select(x => x.Value).ToArray<String>();
.Captures
属性应该能让我获取到CaptureCollection
,它实现了IEnumerable
,并且IEnumerable
提供了一个扩展方法Select
,用于转换操作,正如我在这里尝试的一样,在集合中获取每个项目的Value
属性,并将其推入字符串数组中。然而,编译器却报错了:
我可以通过从Captures对象调用'System.Text.RegularExpressions.CaptureCollection'不包含名为'Select'的定义,并且也没有接受类型为'System.Text.RegularExpression.CaptureCollection'的第一个参数的扩展方法'Select'。
.Cast<Capture>()
方法,然后使用一个转换操作来访问Value
属性,以此来克服这个问题,但考虑到这些对象已经是Capture
对象,这似乎有点傻。我做错了什么?非常感谢您提前指出我可能会犯的一个非常明显的错误。
IEnumerable
而ن¸چوک¯IEnumerable<T>
م€‚ - L.B