2017-02-21 2 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 секунд быстрее! damn;) –

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 Я сомневаюсь, что Fabio этого не знает. У меня также есть коллега, который предпочитает писать его таким образом, для него он более читабельен, он говорит –

+1

+1 для использования 'HashSet', следя за такими вещами, как это значительно повышает производительность приложения. – ColinM

3

Это может сделать трюк для вас

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