C# 搜索ArrayList包含除两个值之外的任何其他值

C# 搜索ArrayList包含除两个值之外的任何其他值,c#,asp.net,.net,asp.net-mvc-4,arraylist,C#,Asp.net,.net,Asp.net Mvc 4,Arraylist,我必须搜索ArrayList,除了这两个值外,是否还添加了其他值: 样本: 有两个值:Test1和Test2 如果arraylist包含除这两个值之外的任何其他值。然后它应该返回真值 到目前为止,我所尝试的: public static bool checkOtherValue(ArrayList arr) { string[] vals = new string[5] { "Test3", "Test4", "Test5", "Test6", "Test7" }; bool c

我必须搜索ArrayList,除了这两个值外,是否还添加了其他值:

样本: 有两个值:
Test1和Test2
如果arraylist包含除这两个值之外的任何其他值。然后它应该返回真值

到目前为止,我所尝试的:

public static bool checkOtherValue(ArrayList arr)
{
    string[] vals = new string[5] { "Test3", "Test4", "Test5", "Test6", "Test7" };
    bool check = false;
    for (int i = 0; i < 5; i++)
    {
        if (arr.Contains(vals[i]))
        {
            check = true;
            break;
        }
    }
    return check;
}

您可以编写一个扩展方法:

public static bool ContainsAny(this ArrayList arr, params string[] values)
{
     return arr.OfType<string>().Any(values.Contains);
} 
但是如果您不必使用
ArrayList
,我强烈建议您使用类型安全集合,例如
List

示例:如果arraylist包含任何值,则有两个值:Test1和Test2 除这两个值之外的其他值。那么它应该 返回true

如果我是正确的,这可以重新表述为:如果不是arraylist中的所有值都在测试值中,则返回true

如果这是正确的,检查可以简化为:

public static bool ContainsAny(this ArrayList arr, params string[] values)
{
     return !arr.OfType<string>().All(values.Contains);
} 
publicstaticboolcontainsany(此ArrayList arr,参数字符串[]值)
{
return!arr.OfType().All(values.Contains);
} 

hello selman,如果值为“Test1”、“Test3”,则返回true,但如果存在除Test1、Test2以外的任何其他值,则应返回false。请查看我的编辑问题。@dawncode
返回类型()的数组。除了(值)。Any()
yourArrayList.ContainsAny("Test1","Test2");
public static bool ContainsAny(this ArrayList arr, params string[] values)
{
     return !arr.OfType<string>().All(values.Contains);
}