检查列表中是否没有值

时间:2017-02-21 08:59:34

标签: c# linq

我不希望使用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())
{
}

4 个答案:

答案 0 :(得分: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

快得多

答案 1 :(得分:3)

这可能会为你做到这一点

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

答案 2 :(得分:2)

您可以使用Contains执行此操作。

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

答案 3 :(得分:2)

检查它是否包含值:

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

如果您想迭代列,我建议避免在每列调用列表创建代码。更好的方法是获得一次并使用它。

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

    }
}