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解决方案做得很好!!