2010-01-29 4 views
7

Je remarque que je fais beaucoup ce modèle. Y a-t-il une meilleure façon d'écrire cela? Je connais if sz in tags existent dans d'autres langues. J'espère qu'il y a quelque chose dans linq qui peut aider?si déclaration sur un foreach

+0

LINQ pourrait aider. Je ne connais pas la syntaxe exacte, mais serait quelque chose comme selectedTags = tags.Where (tag => tag! = Sz); –

+1

Votre code n'a aucun sens. Manquez-vous des accolades? Même alors, cela n'a toujours pas de sens. –

+2

@Mark, qu'est-ce qui est absurde? Personnellement, j'aurais ajouté quelques accolades, mais c'est un fragment de code légal, à condition que le code soit trouvé dans une boucle, qui se trouve dans une méthode, une propriété, un événement ou un indexeur, qui est à son tour dans un type. –

Répondre

12

Pour l'exemple:

if (tags.Contains(sz)) ... 

Pour le problème plus général:

if (tags.Any(tag => InvolvedLogic(tag))) ... 
+0

Je pense que votre hypothèse est plus correcte. – ChaosPandion

8

En supposant tags est un List<T>:

if (tags.Contains(sz)) 
{ 
    // ... 
} 
+0

doux cela semble fonctionner sur n'importe quel objet IEnumerable! –

+0

Any 'ICollection ' effectivement, mais oui. – Aistina

2

Si vous voulez juste savoir si une donnée l'article est en tags, faire:

if(tags.Any(t => t == sz)) 
{ 
    // Do stuff here 
} 

Si vous voulez saisir une référence à l'article trouvé, faites:

var foundTag = tags.FirstOrDefault(t => t == sz); 
// foundTag is either the first tag matching the predicate, 
// or the default value of your tag type 
0
if (tags.Any(t=>t == sz) == true) 
{ 
    //... 
} 
+0

Pas aussi efficace que tout - cela marchera tous les articles même quand il en a déjà un. –

+1

Oui, vous avez raison. Je l'ai écrit comme une alternative. – NetSide

+3

En effet; Ne fais pas ça. Si quelqu'un dit "avez-vous de l'argent?" vous n'avez pas à compter les factures dans votre poche pour donner une réponse, il suffit de voir s'il y en a. –