2013-02-20 45 views
2

What is the OR operator in an IF statement如何檢查,如果事情等於任何值的列表在C#

我問這個問題,遙想當年,當我得到了(非常有用)的答案,我想你應該可以說if (title == "User greeting" || "User name") {do stuff} 。現在,如果不明顯,爲什麼不起作用,請參考另一個問題及其接受的答案。

但是,我想知道,如果有一種方法來給任意字符串列表來檢查是否有任何等於他們的東西。就像if(Array.OR(title, { "User greeting", "User name" })) continue;有這樣的事情,還是我在黑暗中拍攝?看起來實施起來相當簡單。

回答

0

CorrugatedAir的例子非常好,但是如果需要的話,你可以將它包括在內。

if (new string[] { "test1", "test2", "test3" }.Contains("test1")) Console.WriteLine("it works"); 

而且它的工作:http://ideone.com/QzbvKV(感謝Soner)

所以我的代碼是這樣:if (new string[] { "User greeting", "User name" }.Contains(title)) Console.WriteLine("title contained");

http://ideone.com/PYugJu

附:感謝Soner的鏈接,我從來沒有聽說過ideone!

4

你可以嘗試包含運營商:

String[] array = {"One", "Two", "Three"}; 
if (array.Contains("One")) 
{ 
    //Do stuff  
} 
+2

請注意,如果選項的數量很大,您應該使用可以更有效地搜索的數據結構,如HashSet。對於小數據集而言,這並不相關。 – Servy 2013-02-20 19:58:41

0

您可以在此情況下使用Enumerable.Contains()方法。此方法的另一面是只要找到匹配元素,枚舉就立即終止

通過使用默認的相等比較器 來確定序列是否包含指定的元素。

string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" }; 
string fruit = "mango"; 
bool hasMango = fruits.Contains(fruit); 

這裏是一個DEMO

不要忘記添加System.Linq命名空間。

0

更加全面,靈活的解決方案表彰字符串比較:

using System; 
using System.Collections.Generic; 
using System.Linq; 

public static class StringExtensions 
{ 
    public static bool EqualsAny(this string target, StringComparer comparer, params string[] values) 
    { 
     return target.EqualsAny(comparer, (IEnumerable<string>) values); 
    } 

    public static bool EqualsAny(this string target, params string[] values) 
    { 
     return target.EqualsAny((IEnumerable<string>)values); 
    } 

    public static bool EqualsAny(this string target, StringComparer comparer, IEnumerable<string> values) 
    { 
     return values.Contains(target, comparer); 
    } 

    public static bool EqualsAny(this string target, IEnumerable<string> values) 
    { 
     return values.Contains(target, StringComparer.OrdinalIgnoreCase); 
    } 
} 

用法:

if (title.EqualsAny("User greeting", "User name")) 
{ 
    //do stuff 
} 

PS重複@Servy的話:這樣的解決方案正常工作的一小值,爲大設置考慮使用字典,HashSet等

相關問題