Tengo el siguiente código:
MatchCollection matches = myRegEx.Matches(content);
bool result = (from Match m in matches
where m.Groups["name"].Value.Length > 128
select m).Any();
¿Hay alguna forma de hacer esto usando la sintaxis del método de extensión LINQ?
Algo como esto:
bool result = matches.Any(x => ... );
using System.Linq
contrario, dará un error de sintaxisCast
no es necesario desde C # 8.0, pero el código no se compilará en versiones de idiomas anteriores si no se proporciona.Cuando especifica un tipo de variable de rango explícito , el compilador inserta una llamada a
Cast<T>
. Así que esto:es exactamente equivalente a:
que también se puede escribir como:
En este caso la
Cast
llamada es necesaria porqueMatchCollection
solo implementaICollection
yIEnumerable
, noIEnumerable<T>
. Casi todos los métodos de extensión de LINQ to Objects están dirigidos aIEnumerable<T>
, con las notables excepciones deCast
yOfType
, los cuales se utilizan para convertir una colección de tipo "débil" (comoMatchCollection
) en una genéricaIEnumerable<T>
, lo que permite realizar más operaciones LINQ.fuente
Prueba esto:
Para referencia, consulte
Enumerable.Cast
:Básicamente es una forma de convertir un archivo
IEnumerable
en unIEnumerable<T>
.fuente
Creo que sería algo como esto:
fuente
MatchCollection
solo se implementaIEnumerable
. No está fuertemente tipado.Puedes probar algo como esto:
fuente
EDITAR:
Entonces debería poder llamar a este método de extensión para convertirlo en un IEnumerable:
fuente
MatchCollection
solo se implementaIEnumerable
. No está fuertemente tipado.