J'ai une boucle foreach où je suis itération à travers une liste pour vous assurer que chaque élément est valide et que vous souhaitez renvoyer un booléen.
Voici mon code foreach: P>
var isValid = requestList
.Select(r =>
{
if (!r.ChannelId.HasValue || !r.PayoutAmountInCents.HasValue)
{
PayoutFDEvents.LogInvalidPayoutRequest(this.BuildPayoutFDDocument(r), "missing channelId or patronage amount");
return false;
}
return true;
});
3 Réponses :
Ceci pourrait être converti en une expression simple comme celle-ci:
var isValid = requestList.All(r => r.ChannelId.HasValue && r.PayoutAmountInCents.HasValue)
Pour mieux comprendre, quelle est la raison de ne pas se connecter à mon expression?
@RDOOLABH C'est la séparation des préoccupations. Vous pouvez détecter et enregistrer les entrées problématiques à l'aide d'une instruction séparée: demande de demande.Où (r => r.chancep == null || r.payoutamounttinct == null) .foreseach (r => payoutfdevents.loginvalidpayoutrequet (this. BuildPayoutFDDoc ument (R), «Quantité manquante canalid ou patronage»)); code>
Une option serait d'utiliser: car < EM> En toute honnêteté, car vous exécutez la journalisation dans votre boucle existante, je tiendrais votre code existant. C'est simple, clair et facile à lire et à comprendre. Em> p> p> false code> est "moins" que vrai code>, cela retournera false code> si l'une des entrées individuelles répond à la condition (c'est-à-dire null code>). p> défaillance code> Bit est à gérer Le scénario où demande code> est vide - dans quel cas isvalid code> sera défini sur true code>. p>
Vous pouvez également essayer ceci:
var invalids = requestList.Where(r => !(r.ChannelId.HasValue && r.PayoutAmountInCents.HasValue)).ToList(); invalids.ForEach(r => PayoutFDEvents.LogInvalidPayoutRequest(BuildPayoutFDDocument(r), "msg")); bool isValid = invalids.Any();
LINQ n'est pas approprié ici à cause du
payoutfDevents.loginvalidpayouRequest code> appel. C'est un effet secondaire et ne faisant pas partie de la logique de projection. Stick avec l'originalforeach code> boucle.Je voudrais connecter tous les éléments non valides
L'une des réponses a-t-elle fonctionné pour vous?