C# 检查表顺序是对是错,如何使代码清晰

C# 检查表顺序是对是错,如何使代码清晰,c#,C#,我想检查列表顺序是否正确,我的解决方案在这里。 它起作用了,但它看起来又脏又蠢,有更好的灵魂能做到这一点吗 我加上两个例子来解释这个例子 public enum HI { A, B, C } public class Test : MonoBehaviour { public void TestOroder() { // check hiList order ----> A >B >C List<H

我想检查列表顺序是否正确,我的解决方案在这里。 它起作用了,但它看起来又脏又蠢,有更好的灵魂能做到这一点吗

我加上两个例子来解释这个例子

public enum HI
{
    A,
    B,
    C
}

public class Test : MonoBehaviour
{
    public void TestOroder()
    {
        // check hiList order ----> A >B >C
        List<HI> hiList = new List<HI>() { HI.A, HI.B, HI.B, HI.B, HI.C , HI.C , HI.C };

        //right
        bool isRight = FindWorngOrder(hiList);

        // check hiList order ----> A >B >C
        List<HI> hiList2 = new List<HI>() { HI.A, HI.B, HI.C, HI.A ,HI.B, HI.B, HI.C };
        //worng
        bool isRight2 = FindWorngOrder(hiList);
    }

    public bool FindWorngOrder(List<HI> hiList)
    {
        bool haveWorngOrder;
        for (int i = 0; i < hiList.Count - 1; i++)
        {
            HI current = hiList[i];
            HI next = hiList[i + 1];

            if (current == HI.C && next == HI.A ||
                current == HI.C && next == HI.B)
            {
                return true;
            }

            if (current == HI.C && next == HI.B)
            {
                return true;
            }
        }

        return false;
    }
}
由@mjwills回答

public bool FindWorngOrder(List<HI> hiList)
    {
        List<HI> orderd = hiList.ToList();
        orderd.Sort();

        return orderd.SequenceEqual(hiList);
    }
我建议使用:

public bool IsInTheSamerOrder(IEnumerable<HI> hiList)
{
    return hiList.SequenceEqual(hiList.OrderBy(z => z));
}

它与您的答案相似,但略短,不需要明确的列表。

请显示至少6个顺序正确的输入,以及至少6个顺序不正确的输入,以便我们能够理解您的意思。@mjwills我编辑了我的问题:OrderBy以进行排序和排序,以便对其进行比较。已经回答了。谢谢大家,我通过@mjwills解决方案做得很好!!