搜索 ArrayList 包含除两个提及值之外的任何其他值
Search ArrayList contain any other value apart from two mention values
我要搜索 ArrayList 除了这两个值之外是否还添加了其他值:
样本:
有两个值:Test1 & Test2
如果 arraylist 包含除这两个值中的任何一个之外的任何其他值。那么它应该 return 为真。
到目前为止我尝试过的:
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;
}
这将检查 array 和 return arraylist 是否包含字符串数组中的任何提及字符串。但我相信应该有最短的方法来做到这一点。
比如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;
}
你可以写一个扩展方法:
public static bool ContainsAny(this ArrayList arr, params string[] values)
{
return arr.OfType<string>().Any(values.Contains);
}
并像这样使用它:
yourArrayList.ContainsAny("Test1","Test2");
但如果您不必使用 ArrayList
.
,我强烈建议您使用类型安全的集合,例如 List<T>
Sample: there are two values : Test1 & Test2 if arraylist Contain any
other value apart from either of these two values. then it should
return true.
如果我是正确的,这可以改写为:return如果不是数组列表中的所有值都在测试值中,则为真。
如果这是正确的,检查可以简化为:
public static bool ContainsAny(this ArrayList arr, params string[] values)
{
return !arr.OfType<string>().All(values.Contains);
}
我要搜索 ArrayList 除了这两个值之外是否还添加了其他值:
样本:
有两个值:Test1 & Test2
如果 arraylist 包含除这两个值中的任何一个之外的任何其他值。那么它应该 return 为真。
到目前为止我尝试过的:
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;
}
这将检查 array 和 return arraylist 是否包含字符串数组中的任何提及字符串。但我相信应该有最短的方法来做到这一点。
比如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;
}
你可以写一个扩展方法:
public static bool ContainsAny(this ArrayList arr, params string[] values)
{
return arr.OfType<string>().Any(values.Contains);
}
并像这样使用它:
yourArrayList.ContainsAny("Test1","Test2");
但如果您不必使用 ArrayList
.
List<T>
Sample: there are two values : Test1 & Test2 if arraylist Contain any other value apart from either of these two values. then it should return true.
如果我是正确的,这可以改写为:return如果不是数组列表中的所有值都在测试值中,则为真。
如果这是正确的,检查可以简化为:
public static bool ContainsAny(this ArrayList arr, params string[] values)
{
return !arr.OfType<string>().All(values.Contains);
}