我有两个数组如下:
_user string[3] containing "true" "true" and "true"
_test bool[3] containing true true false
阵列中元素的数量因运行而异。我的问题是我如何比较这两个数组中的值,如果元素一对一匹配则返回true。
希望有人可以提供帮助,因为我的C#并不是很好。
珍
答案 0 :(得分:13)
使用bool.Parse
将字符串转换为bool,使用SequenceEqual
来比较序列:
if (_user.Select(bool.Parse).SequenceEqual(_test))
{
...
}
答案 1 :(得分:1)
bool equal=true;
for(int i=0;i<3;i++)
{
if (!( _user[i].equals(Convert.ToString(_test[i]))))
{
equal=false;
break;
}
}
或
equal=true;
for(int i=0;i<3;i++)
{
if !(_test[i]==Convert.ToBoolean(_user[i])))
{
equal=false;
break;
}
}
答案 2 :(得分:0)
不是LINQiest,但在这种情况下,必要的解决方案非常明确:
bool TestItems() {
for (int i = 0; i < Math.Min(_user.Length, _test.Length); i++) {
if (_test[i] != (_user[i] == "true")) {
return false;
}
}
return true;
}
应该注意的是,在没有任何澄清的情况下,这假设两者的长度相同,并且不均匀的数组长度将忽略较小数组的边界之外的元素。
答案 3 :(得分:0)
bool [] array1 = {true,false, true};
bool[] array2 = { true, true, true };
bool result = false;
for (int index = 0; index < array1.Length && index < array2.Length; index++)
{
result = CheckTrueOrNot(array1[index],array2[index]);
Console.WriteLine(result.ToString());
}
private bool CheckTrueOrNot(bool value1, bool value2)
{
bool comparisonVal = false;
if (value1.CompareTo(value2) == 0)
{
comparisonVal = true;
}
return comparisonVal;
}