C# 相互比较数组值
我想比较两个整数数组,然后打印出等号。我尝试了Intersect方法: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
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");
}
}