2010-01-29 24 views
7

Bu deseni çok yaptığımı fark ettim. Bunu yazmanın daha iyi bir yolu var mı? Ben if sz in tags biliyorumBir foreach üzerinde ifade

  bool hit=false; 
      foreach (var tag in tags) 
       if (tag == sz) 
       { 
        hit = true; 
        break; 
       } 
      if (hit) continue; 
      //tags.add(sz); or whatever i wanted to do 

diğer dillerde mevcuttur. Umarım linq'de yardımcı olabilecek bir şey var mı? Eğer sadece bir verilirse bilmek istiyorsanız

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

linq yardımcı olabilir. Tam sözdizimini bilmiyorum, ama selectedTags = tags.Where (tag => tag! = Sz) gibi bir şey olurdu; –

+1

Kodunuz hiç mantıklı değil. Kıvırcık parantez eksik misin? O zaman bile hala mantıklı değil. –

+2

@Mark, bu konuda saçma sapan nedir? Ben şahsen birkaç tane daha fazla parantez koydum, ama bu kodun bir türün içinde bir yöntem, özellik, olay veya dizinleyicinin içinde bulunan bir döngü içinde bulunması koşuluyla, bir yasal kod parçası. –

cevap

12

: tags varsayarsak

+0

Bence varsayımın daha doğru olduğunu düşünüyorum. – ChaosPandion

8

bir List<T> olduğunu Öğe tags içinde, yapmak:

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

Bulduğunuz öğeye başvuru kapmak istiyorsanyapın:

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

sweet bu herhangi bir IEnumerable nesne üzerinde çalışıyor gibi görünüyor! –

+0

Herhangi bir "ICollection " aslında, ancak evet. – Aistina

2

: daha genel sorun için

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

: Örneğin

if (tags.Contains(sz)) 
{ 
    // ... 
} 
0
if (tags.Any(t=>t == sz) == true) 
{ 
    //... 
} 
+0

Herhangi bir kadar etkili değil - bu zaten bir tane olsa bile tüm öğeleri yürüyecek. –

+1

Evet haklısınız. Bunu bir alternatif olarak yazdım. – NetSide

+3

Gerçekten de; bunu yapma. Birisi "herhangi bir paran var mı?" Bir cevap vermek için cebinizde faturaları saymak zorunda değilsiniz, sadece var olup olmadığını görmeniz gerekir. –