我进行了彩票模拟,我有2个不同的数组,其中包含6个数字,首先保存用户希望播放的数字,其次是每次运行时产生的数字。
用户将他们的数字输入文本框并将其保存为字符串并放入aray中的相应位置,随机生成的nums也会作为字符串保存到字符串数组中。
在此之后,我有一个用于比较的SequenceEqual
bool equal = lotteryNums.SequenceEqual(playerNums);
这总是返回false,我已经手动将所有生成的数组元素设置为1-6,然后玩家通过文本框相应地命名,但它总是会返回false。
生成的数组当前就像这样填充进行测试
lotteryNums[0] = "1";
lotteryNums[1] = "2";
lotteryNums[2] = "3";
lotteryNums[3] = "4";
lotteryNums[4] = "5";
lotteryNums[5] = "6";
播放器数组使用下一个数字的下一个数组位置
填充string inputNum = inputBox_txt.Text;
playerNums[0] = inputNum;
为什么这总是返回假?
因为人们要求数组的顺序完全相同,并且似乎不包含任何比数组中的数字更多或更少的数组
答案 0 :(得分:2)
SequenceEqual
返回true;否则,错误。
由于您提供的两个数组不相同,因此您获得false
。
答案 1 :(得分:2)
除了Athanasios Emmanouilidis所说的话:收藏品似乎需要具有相同的订单。所以你应该订购它们:
bool equal = playerNums.OrderBy(n => n).SequenceEqual(lotteryNums.OrderBy(n => n));
答案 2 :(得分:0)
要考虑的另一件事:SequenceEquals
要求两个数组中的数字顺序完全相同。即使数组包含相同的数字,但它们的顺序不同,您也会得到错误。您可以通过在比较之前对每个列表进行排序来解决此问题(只需确保以相同的方式对它们进行排序)。
如果这不起作用,请验证文本框中的字符串实际上只是数字,并且不包含任何空格或特殊字符。
答案 3 :(得分:0)
SeqqnceEqual
也会考虑到元素的顺序,你可能不想在彩票中使用。你想要的是检查所有预期值是否也在inout中:
var sixCorrects = lotteryNums.All(x => playerNums.Contains(x));
只要在All
内找不到lotteryNums
的元素, playerNums
就会停止迭代。