2017-02-21 131 views
-3

我不希望使用List<string>的值。檢查值是否不在列表中

對於List<string>我有一個函數:

private List<string> GetManualColumns() 
{ 
    List<string> listColumns = new List<string>(); 
    listColumns.Add("USER_KEY"); 
    listColumns.Add("USER_NAME"); 

    return listColumns; 
} 

我需要重複,以特定值(列名),但它們不能在列表中的功能GetManualColumns()

如何做到這一點?

我需要這樣的東西:

if(col not in GetManualColumns()) 
{ 
} 

回答

2

您可以使用Contains做到這一點。

if(!GetManualColumns().Contains(col)) 
{ 
    // Do Something 
} 
+2

快8秒!該死的;) –

2

檢查是否含有值:

if(!GetManualColumns().Contains(col)) 

如果你想遍歷我建議列避免調用每列列表創建代碼。更好的方法是獲得一次並使用它。

List<string> res = GetManualColumns(); 
foreach (var col in columns) 
{ 
    if (!res.Contains(col)) 
    { 

    } 
} 
4

使用HashSet<string>Contain方法

private HashSet<string> GenerateManualColumns() 
{ 
    return new HashSet<string> { "USER_KEY","USER_NAME" }; 
} 

var manualColumns = GenerateManualColumns(); 
if (manualColumns.Contains(col) == false) 
{ 

} 

HashSet<T>.Contain()方法是O(1),因此搜索將是List

+0

你可以寫'if(!hashSet.Contains(col))' – aloisdg

+4

@aloisdg我懷疑法比奧不知道這一點。我也有一位喜歡這樣寫的同事,對他來說,它更具可讀性,他說 –

+1

對於HashSet的用法是+1,並且關注類似這樣的應用程序的巨大優勢。 – ColinM

3

則快得多這可能會爲你

if (!GetManualColumns().Any(s => s == col)) 
{ 
    //Do Something 
} 
做的伎倆