C# 如何对两个arraylist进行排序,然后比较它们是否相同

C# 如何对两个arraylist进行排序,然后比较它们是否相同,c#,C#,我试图对这两个数组元素进行排序,并将它们彼此匹配,如果其中一个匹配,它将返回lucky,否则将返回lucky,有没有任何错误的想法 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 名称空间Apptest { 班级计划 { 静态void Main(字符串[]参数) { int[]arr1={5,4,3,8,1}; int[]arr2={8,1,5,4,3}; string str=滚动骰子(arr1,arr2); 控制台写入线(

我试图对这两个数组元素进行排序,并将它们彼此匹配,如果其中一个匹配,它将返回lucky,否则将返回lucky,有没有任何错误的想法

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
名称空间Apptest
{
班级计划
{
静态void Main(字符串[]参数)
{
int[]arr1={5,4,3,8,1};
int[]arr2={8,1,5,4,3};
string str=滚动骰子(arr1,arr2);
控制台写入线(str);
}
公共静态字符串滚动骰子(int[]input1,int[]input2)
{
//input1.Sort();
//input2.Sort();
对于(int i=0;i您可以使用:

Array.Sort(input1);
Array.Sort(input2);
bool equal=input1.SequenceEqual(input2);
返回相等值?“lucky”:“lucky”//在您的示例中为lucky

您必须分配排序数组的结果

var foo = input1.Sort();
var bar = input2.Sort();

然后比较foo和bar。

在这种情况下,检查相等性的最短方法是:

bool equal = arr1.Length == arr2.Length && !arr1.Except(arr2).Any();

不要忘了
介于
幸运
不幸运
之间的
。我读到“如果一个匹配,它返回幸运,否则不幸运”,意思是只有一个匹配。我想是时候要求澄清了。)@user3417203:是什么让你认为上面的代码不能在
rollingdice
方法中使用?@user3417203你可以使用
数组.Sort(input1)
@user3417203:抱歉,修复了这个问题。现在我正在使用
数组.Sort
(我应该在我的测试项目中删除这些令人困惑的扩展).你不知道哪里出了问题吗?一条错误消息、意外行为等。你也能澄清一下你的要求吗。每个元素必须在两个数组之间匹配,还是只有一个元素必须匹配?我读到“如果有一个匹配,则返回lucky,否则返回lucky”,意思是只有一个匹配。我猜是英语这不是你的第一语言,所以这不是一个批评,只是一个澄清的请求。也许有一些例子说明什么是幸运的,什么不是。例如,如果数组
{1,2,3}
{1,2,4}
是幸运的还是不幸运的?那么
{1,1,2}
{1,2,2}呢
?如果数组中存在重复项,则可能不一定有效。ie应将(1,1,2)视为(1,2,2)的匹配项。问题是不清楚实际需求是什么。哎呀,
可枚举。Except
返回两者之间的集差,而不是
int
。但即使修复它,也不是可行的方法。
可枚举。Except
使用一个删除重复项的集。因此
1,1
将与
1
相同。你也只检查了一面,所以如果所有的
arr1
都在
arr2
中,但不是相反的。@TimSchmelter哇,我的错!@Chris编辑,现在也考虑到了这一点。数组上的
排序
方法不是一个实例方法(它是
静态
)。而且,该方法“就地”排序(与例如Linq的
OrderBy
)不同,因此不指定结果(不能将
void
返回类型指定给变量)。
var foo = input1.Sort();
var bar = input2.Sort();
bool equal = arr1.Length == arr2.Length && !arr1.Except(arr2).Any();