gpt4 book ai didi

c# - 是否可以在 LINQ 中表达此代码?

转载 作者:可可西里 更新时间:2023-11-01 02:59:33 24 4
gpt4 key购买 nike

我正在阅读一本面向初学者的 C# 书籍,在每一章的末尾,都有根据所学类(class)回答的练习。

其中一个练习是这样的:(不是确切的措辞)

编写一个程序,接受一个 int 作为数组长度,以及数组的值。
然后会打印:
"0"如果数组没有按升序排序。
如果已排序,则为“1”。而且,
"2"如果已经排序,但是有重复。

示例:

// Sorted
Input: 1, 2, 3, 5
Print: 1

// Not sorted
Input: 2, 1, 3, 6
Print: 0

// Sorted, but with duplicates
Input: 2, 2, 3, 7
Print: 2

我不知道我这里的逻辑是否绝对,但不知何故它起作用了,
我使用这段代码以我的方式完成了它:

int arrayLength = 0;
int prev, next;
int sortStatus = 1;

Console.Write("Input array Length: ");
arrayLength = Convert.ToInt32(Console.ReadLine());
int[] ar = new int[arrayLength];

for (int x = 0; x < arrayLength; x++)
{
Console.Write("Input {0} value: ", (x+1).ToString());
ar[x] = Convert.ToInt32(Console.ReadLine());
}

for (int x = 0; x < ar.Length-1; x++)
{
prev = (int)ar[x];
next = (int)ar[x + 1];

if (next < prev)
sortStatus = 0;
if (next == prev)
sortStatus = 2;
}

Console.Write(sortStatus.ToString());
Console.Read();

可以在 LINQ 中表达吗?怎么办?

最佳答案

if (ar.SequenceEqual(ar.OrderBy(x => x)))
{
if (ar.Distinct().Count() == ar.Length)
return 1;
else
return 2;
}
else
{
return 0;
}

关于c# - 是否可以在 LINQ 中表达此代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com