Можно ли выразить этот код в LINQ?

Я читаю книгу C # для начинающих, и в каждом конце главы есть упражнения, на которые нужно ответить на основе пройденных уроков.

Одно из этих упражнений выглядит следующим образом: (не точная формулировка)

Напишите программу, которая будет принимать 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? Как?

17
задан yonan2236 21 October 2010 в 02:20
поделиться