2009-10-29 19 views
7

Bir dize değeri EndsWith başka bir dizgi olup olmadığını bulmaya çalışıyorum. Bu 'diğer dize' bir koleksiyonun değerleridir. Dizeler için bunu bir uzatma yöntemi olarak yapmaya çalışıyorum. Örn.,Bu dizginin bir değer mi (bir koleksiyondan) bitip bitmediğini belirlemek için Linq'i nasıl kullanabilirim?

örn.

var collection = string[] { "ny", "er", "ty" }; 
"Johnny".EndsWith(collection); // returns true. 
"Fred".EndsWith(collection); // returns false. 

cevap

12
var collection = new string[] { "ny", "er", "ty" }; 

var doesEnd = collection.Any("Johnny".EndsWith); 
var doesNotEnd = collection.Any("Fred".EndsWith); 

Sen Any

public static bool EndsWith(this string value, params string[] values) 
{ 
    return values.Any(value.EndsWith); 
} 

var isValid = "Johnny".EndsWith("ny", "er", "ty"); 
+0

_ANY_ .. ah !!! harika :) Linq seviyorum. teşekkürler dostum :) –

0

kullanımını gizlemek için bir dize uzantısı oluşturabilir Orada .NET framework yerleşik bir şey değildir ama burada hile olacaktır bir uzantısı yöntemidir :

public static Boolean EndsWith(this String source, IEnumerable<String> suffixes) 
{ 
    if (String.IsNullOrEmpty(source)) return false; 
    if (suffixes == null) return false; 

    foreach (String suffix in suffixes) 
     if (source.EndsWith(suffix)) 
      return true; 

    return false; 
} 
+0

Şerefe. evet, bu zaten sahip olduğum şey (az çok). Bunu Linq olarak nasıl yapacağımı görmek istiyordum (böylece öğrenebilirim). –

+0

snap! hahahah :-) –

0
public static class Ex{ 
public static bool EndsWith(this string item, IEnumerable<string> list){ 
    foreach(string s in list) { 
    if(item.EndsWith(s) return true; 
    } 
    return false; 
} 
} 
İlgili konular