You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现方法判断指定字符串列表的元素是否存在于目标列表中

实现字符串列表元素存在性检查(忽略顺序)

你需要的IsValueInsideTheList方法可以通过两种方式实现——无需手动写循环的LINQ方式,或者手动遍历的循环方式,下面分场景给出具体实现:

场景1:检查传入数组的所有元素都存在于list2中

LINQ实现(无需手动循环)

如果项目引用了LINQ(.NET默认支持),可以用All方法快速实现,内部已封装循环逻辑:

// 假设list2是类内预设的列表
private List<string> list2 = new List<string> { "234", "345", "456" };

public bool IsValueInsideTheList(string[] list1)
{
    return list1.All(item => list2.Contains(item));
}

手动循环实现

如果不想依赖LINQ,直接用foreach遍历判断:

private List<string> list2 = new List<string> { "234", "345", "456" };

public bool IsValueInsideTheList(string[] list1)
{
    foreach (string item in list1)
    {
        if (!list2.Contains(item))
        {
            return false;
        }
    }
    return true;
}

场景2:检查传入数组中至少有一个元素存在于list2中

LINQ实现(无需手动循环)

用Any方法即可,逻辑更简洁:

private List<string> list2 = new List<string> { "234", "345", "456" };

public bool IsValueInsideTheList(string[] list1)
{
    return list1.Any(item => list2.Contains(item));
}

手动循环实现

遍历过程中找到存在的元素就直接返回true:

private List<string> list2 = new List<string> { "234", "345", "456" };

public bool IsValueInsideTheList(string[] list1)
{
    foreach (string item in list1)
    {
        if (list2.Contains(item))
        {
            return true;
        }
    }
    return false;
}

性能优化建议

如果list2的元素数量较多,List<string>.Contains的查询效率是O(n),可以提前把list2转换成HashSet<string>,让查询操作变成O(1):

// 初始化时转成HashSet,提升重复查询的性能
private HashSet<string> list2Set = new HashSet<string> { "234", "345", "456" };

public bool IsValueInsideTheList(string[] list1)
{
    return list1.All(item => list2Set.Contains(item));
}

内容的提问来源于stack exchange,提问作者Kermi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:54:22