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