2017-02-21 6 views
-3

Ich möchte nicht, dass Werte von List<string> verwendet werden.Überprüfen, ob der Wert nicht in der Liste ist

Für List<string> Ich habe eine Funktion:

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

    return listColumns; 
} 

Ich muss bestimmte Werte (Spaltennamen) wiederholen, aber sie dürfen nicht von der Funktion GetManualColumns() in der Liste sein.

Wie geht das?

Ich brauche so etwas wie:

if(col not in GetManualColumns()) 
{ 
} 

Antwort

2

Sie Contains dies zu tun, verwenden können.

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

8 Sekunden schneller! verdammt;) –

2

prüft, ob sie den Wert enthält:

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

Wenn Sie die Spalten iterieren möchte ich an jeder Spalte der Listenerstellung Code zu vermeiden vorschlagen aufrufen. Ein besserer Weg wäre, es einmal zu bekommen und es zu benutzen.

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

    } 
} 
4

Verwenden HashSet<string> und Contain Methode

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

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

} 

HashSet<T>.Contain() Methode ist O (1), so wird Suche von List

+0

Sie können 'if (! hashSet.Contains (col)) schreiben' – aloisdg

+4

@aloisdg Ich bezweifle, dass Fabio das nicht weiß. Ich habe auch einen Kollegen, der es vorzieht, es so zu schreiben, für ihn ist es besser lesbar, sagt er –

+1

+1 für 'HashSet' Nutzung, ein Auge auf Dinge wie diese Leistung der Anwendung von großem Nutzen. – ColinM

3

Das ist für dich dann viel schneller sein könnte, den Trick

if (!GetManualColumns().Any(s => s == col)) 
{ 
    //Do Something 
} 
Verwandte Themen