2010-10-13 4 views
1

J'ai une expression lambda qui ressemble actuellement à ceci:Expression lambda conditionnelle?

item => Reports.Add(item) 

Je veux modifier telle qu'elle est conditionnelle, et vérifie essentiellement que Reports.Contains (point) retourne false, effectue le Reports.Add (item) action. Est-ce possible de faire en utilisant lambda tout sur une ligne?

Chris

Répondre

8
Action<ItemType> action = item => { if(!Reports.Contains(item)) Reports.Add(item);}; 

Cela devrait le faire, mais cela dépend de la façon dont vous définissez 'une ligne', vraiment.

+0

Il n'a pas dit que cela doit être joli ou très lisible :) –

+0

Merci - cela a fonctionné parfaitement! – Chris

5

alternative à la suggestion d'Ani: make Reports un HashSet.

+0

D'accord. Il semble qu'une structure de données différente puisse être nécessaire. –

0

Vous pouvez séparer plusieurs lignes dans votre lambda avec des points-virgules.