J'ai besoin d'un peu d'aide pour simplifier une requête LINQ. Les conditions sont les suivantes:Simplifier la requête LINQ
- J'ai besoin d'appliquer
bool IsValid(string expression)
à chaque élément d'une séquence donnée. - Si
IsValid
est vrai pour tous les éléments, renvoyeztrue
. - Si
IsValid
est false pour un élément, renvoyezfalse
. Si la séquence est nulle ou vide, renvoyer égalementfalse
.
La requête que je suis venu avec est
try
{
(sequence.DefaultIfEmpty().Where(item => !IsValid(item).Count() == 0)
}
catch (ArgumentNullException)
{
return false;
}
Le point est que IsValid(null)
jette un ArgumentNullException
qui est interceptée par le bloc catch
. Cependant, je pense que c'est trop compliqué. Y a-t-il un moyen de simplifier la méthode sans compter sur ce fait?
Oui, vous avez raison! Cependant, cela déclenche l'avertissement "Énumération multiple possible de IEnumerable" de ReSharper, que je veux éviter. – User
DefaultIfEmpty retournera simplement un élément nul - quel est son but ici? –
oui juste fixait cette partie, n'a pas vu l'exigence pour la collecte vide – BrokenGlass