【问题标题】:Search ArrayList contain any other value apart from two mention values搜索 ArrayList 包含除两个提及值之外的任何其他值
【发布时间】:2015-05-14 15:09:58
【问题描述】:

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

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

到目前为止我尝试过的:

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;
}

这将检查数组并返回数组列表是否包含字符串数组中的任何提及字符串。但我相信应该有最短的方法。

ArrayList.Find("Test1","Test2") == false;

这个功能对我有用:

public static bool ContainsAny(this ArrayList arr,params string[] values)
{
    bool check = false;
    if (arr.Count > 2)
    {
        check = false;
    }
    else
    {
        if (arr.Count > 1 && arr.Count <= 2)
        {
            if ((arr[0].ToString().ToLower().Trim() == values[0].ToLower().Trim() || arr[0].ToString().ToLower().Trim() == values[0].ToLower().Trim()) &&
               (arr[1].ToString().ToLower().Trim() == values[1].ToLower().Trim() || arr[1].ToString().ToLower().Trim() == values[1].ToLower().Trim()))
                check = true;
            else
                check = false;
        }
        else
        {
            //default value[0]
            if ((arr[0].ToString().ToLower().Trim() == values[0].ToLower().Trim() || arr[0].ToString().ToLower().Trim() == values[0].ToLower().Trim()))
                check = true;
            else
                check = false;
        }
    }

    return check;
}

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc-4 arraylist


    【解决方案1】:

    你可以写一个扩展方法:

    public static bool ContainsAny(this ArrayList arr, params string[] values)
    {
         return arr.OfType<string>().Any(values.Contains);
    } 
    

    并像这样使用它:

    yourArrayList.ContainsAny("Test1","Test2");
    

    但如果您不必使用 ArrayList,我强烈建议您使用类型安全的集合,例如 List&lt;T&gt;

    【讨论】:

    • hello selman,如果值为 "Test1","Test3",则返回 true,但当除 Test1,Test2 之外还有任何其他值时,它应该返回 false。请查看我的编辑问题。
    • @dawncode return arr.OfType&lt;string&gt;().Except(values).Any()
    【解决方案2】:

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

    如果我是正确的,这可以改写为:如果不是数组列表中的所有值都在测试值中,则返回 true。

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

    public static bool ContainsAny(this ArrayList arr, params string[] values)
    {
         return !arr.OfType<string>().All(values.Contains);
    } 
    

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多