Eu tenho o seguinte código:
MatchCollection matches = myRegEx.Matches(content);
bool result = (from Match m in matches
where m.Groups["name"].Value.Length > 128
select m).Any();
Existe uma maneira de fazer isso usando a sintaxe do método de extensão LINQ?
Algo assim:
bool result = matches.Any(x => ... );
using System.Linq
que não haja um erro de sintaxeQuando você especifica um tipo de variável de intervalo explícito , o compilador insere uma chamada para
Cast<T>
. Então, é isso:é exatamente equivalente a:
que também pode ser escrito como:
Neste caso, a
Cast
chamada é necessária porqueMatchCollection
apenas implementaICollection
eIEnumerable
, nãoIEnumerable<T>
. Quase todos os métodos de extensão LINQ to Objects são direcionadosIEnumerable<T>
, com as notáveis exceções deCast
eOfType
, ambos os quais são usados para converter uma coleção de tipos "fracos" (comoMatchCollection
) em um genéricoIEnumerable<T>
- que então permite outras operações LINQ.fonte
Experimente isto:
Para referência, consulte
Enumerable.Cast
:Basicamente, é uma maneira de transformar um
IEnumerable
em umIEnumerable<T>
.fonte
Acho que seria algo assim:
fonte
MatchCollection
apenas implementaIEnumerable
. Não é fortemente tipado.Você pode tentar algo assim:
fonte
EDITAR:
Então você deve ser capaz de chamar este método de extensão para transformá-lo em um IEnumerable:
fonte
MatchCollection
apenas implementaIEnumerable
. Não é fortemente tipado.