J'ai actuellement une méthode qui boucle dans une liste d'objets métier (propriété Propriétés) pour tester si la propriété SerialNumber
est un numéro de série ou non. Si je trouve un numéro de série, je quitte la boucle et renvoie true, sinon je renvoie false.approche LINQ à ce code
est la suivante:
public bool HasSerialNumber()
{
if (this.Properties != null && this.Properties.Count > 0)
{
foreach (var property in Properties)
{
if (!string.IsNullOrEmpty(property.SerialNumber))
return true;
}
}
return false;
}
Y at-il une meilleure approche LINQ à cela?
Je donne les résultats suivants à l'esprit:
return Properties.Where(x => !string.IsNullOrEmpty(x.SerialNumber)).ToList().Count > 0;
Y at-il une meilleure/méthode plus rapide pour le contrôle de chaîne non vide?
Même avec votre exemple, vous pouvez utiliser '.Count()' au lieu de '.ToList(). Count' pour accélérer les choses un peu.' Any() 'est le chemin à parcourir. –
@callum Il m'a donné une erreur de compilation quand j'avais juste .Count() alors j'ai dû appeler ToList(). Sauf si je l'appelais mal ... – mint
@snow: Etrange, ça devrait marcher. Au moins cela fait: 'var strs = new [] {" "," lol ", null}; Console.WriteLine (strs.Where (s => string.IsNullOrEmpty (s)). Count()); ' –