J'ai le code suivant:
MatchCollection matches = myRegEx.Matches(content);
bool result = (from Match m in matches
where m.Groups["name"].Value.Length > 128
select m).Any();
Existe-t-il un moyen de le faire en utilisant la syntaxe de la méthode d'extension LINQ?
Quelque chose comme ça:
bool result = matches.Any(x => ... );
using System.Linq
sinon, cela donnera une erreur de syntaxeCast
n'est pas nécessaire depuis C # 8.0, mais le code ne sera pas compilé dans les versions linguistiques antérieures s'il n'est pas fourni.Lorsque vous spécifiez un type de variable de plage explicite , le compilateur insère un appel à
Cast<T>
. Donc ça:équivaut exactement à:
qui peut aussi s'écrire:
Dans ce cas, l'
Cast
appel est requis carMatchCollection
implémente uniquementICollection
etIEnumerable
, pasIEnumerable<T>
. Presque toutes les méthodes d'extension LINQ to Objects sont cibléesIEnumerable<T>
, à l'exception notable deCast
etOfType
, qui sont tous deux utilisés pour convertir une collection typée "faiblement" (telle queMatchCollection
) en un génériqueIEnumerable<T>
- qui permet ensuite d'autres opérations LINQ.la source
Essaye ça:
Pour référence, veuillez consulter
Enumerable.Cast
:Fondamentalement, c'est une façon de transformer un
IEnumerable
fichierIEnumerable<T>
.la source
Je pense que ce serait quelque chose comme ça:
la source
MatchCollection
seuls les outilsIEnumerable
. Il n'est pas fortement typé.Vous pouvez essayer quelque chose comme ceci:
la source
ÉDITER:
Ensuite, vous devriez pouvoir appeler cette méthode d'extension pour la transformer en un IEnumerable:
la source
MatchCollection
seuls les outilsIEnumerable
. Il n'est pas fortement typé.