La vérification de la valeur null dans une Expression Lambda

Dans le code ci-dessous je suis en train d'essayer d'obtenir le nul, la chaîne vide, et des composants source à partir d'une Liste. Je n'ai pas testé ce code mais mon intuition me dit qu'il va casser lorsque le filtrage de la Liste pour la source et la chaîne vide si elle vient par une valeur null.

J'ai essayé d'extraire les valeurs null en premier, mais je suis encore le filtrage de la Liste de base. Comment puis-je ré-écrire ce code pour accomplir ce que je suis en train de faire de la meilleure façon?

List<LineItem> nullList=itemsList.Where(s => s[Constants.ProductSource] == null)
                                 .ToList();

NALineItems = itemsList.Where(s => s[Constants.ProductSource] == source 
                                   || s[Constants.ProductSource] == String.Empty)
                       .ToList();

NALineItems = nullList.Union(NALineItems).ToList(); 

s[Constantes.ProductSource] est un attachement à la propriété de Microsoft ECommerce PurchaseOrder objet. C'est en fait une autre propriété d'un objet.

  • "Je n'ai pas testé ce code mais mon intuition me dit qu'il va casser", cela signifie Que vous vous posez cette question prématurément.
  • Êtes-vous conscient de la Chaîne.IsNullOrEmpty ?
  • Ne itemsList contiennent des tableaux? Quel est ce s[Constants.ProductSource]?
  • Nous devrions savoir si notre code va rompre dans ces cas, sans le tester en premier. C'est en partie ce que je suis en train d'accomplir.
  • Je ne suis pas d'accord - si vous avez un peu de code déjà aller de l'avant et essayer d'écrire quelques tests (écrire les tests que vous le supposez peut casser en premier!) - il a de la valeur et la prochaine fois que vous rencontrez une chose de similaire, vous savez à quoi s'attendre.
InformationsquelleAutor Nick LaMarca | 2012-05-14