C# 相互比较数组值

C# 相互比较数组值,c#,C#,我想比较两个整数数组,然后打印出等号。我尝试了Intersect方法: var checkingDuplicates = boughttickets.Intersect(winningtickets).Any(); 然后使用if-语句: if (checkingDuplicates == false) { Console.WriteLine("Sorry, You didn't win anything"); } else { Console.WriteLine(checkin

我想比较两个整数数组,然后打印出等号。我尝试了Intersect方法:

var checkingDuplicates = boughttickets.Intersect(winningtickets).Any();
然后使用
if
-语句:

if (checkingDuplicates == false)
{
    Console.WriteLine("Sorry, You didn't win anything");
}
else
{
    Console.WriteLine(checkingDuplicates);
}
但是,此
if
-语句的输出总是返回true


如果我有一些拼写错误,我真的很抱歉,我的母语不是英语。

Any
获取项目序列并返回一个布尔值,指示该序列中是否有任何项目


您不想知道该序列中是否有任何项,只想知道该序列中的所有项是什么。这意味着不要调用
Any
,您将获得这两个数组的交集序列。

首先,我要说的是阅读文档。根据上面的评论,如果不定义.toString实现,就不能对IEnumerable调用.toString()。 试试这个


在上面的foreach循环中,TICKET是您在上面的IEnumerable列表中使用的对象类型。

嘿,Rickard-您在元站点上无意中问了这个问题。我冒昧地把它迁移到这里。非常感谢。我仍然不知道在哪里发布一些问题。我很抱歉给大家带来麻烦。非常感谢。你确实有几个问题需要回答。请注意,返回值是布尔值,即true或false,您包含的
Any
是无关的,因为
Intersect
已经返回了您声称想要的“相等的数字”。照目前的情况,这个问题对其他人可能没有什么帮助,所以我将标记它为关闭。谢谢,但是……如果我使用intersect变量
checkingDuplicates
并使用.tostring()打印它,它将返回System.Linq.Enumerable+d_8b`1[System.Int32],而不是相等的值numbers@RickardB. 没错。序列本身没有覆盖
ToString
,以打印出序列所代表的项目。您需要实际迭代序列并自己打印每个项目。所以我使用.ToArray()而不是.Any()?或者这不是必需的?这不是必需的。使用
ToArray
不是必需的,但它可以提高性能。如果没有,您将创建两次结果,首先一次检查其中是否有任何项目,然后在迭代时再次创建。
var checkingDuplicates = boughttickets.Intersect(winningtickets);

if (!checkingDuplicates.Any())
 {
   Console.WriteLine("Sorry, You didn't win anything");
 }
 else
 {
   foreach(TICKET checkingDuplicate in checkingDuplicates)
   {
    Console.WriteLine("FETCH AND PRINT YOUR TICKET INFORMATION FROM TICKET OBJECT/CLASS");
   }
 }