用于验证列表的lambda表达式是否正确排序

Dav*_*ans 2 c# linq lambda

我想写一个lambda表达式来验证列表是否正确排序.我有一个List,其中一个人有一个Name属性,例如:

IList<Person> people = new List<Person>();
people.Add(new Person(){ Name = "Alan"});
people.Add(new Person(){ Name = "Bob"});
people.Add(new Person(){ Name = "Chris"});
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过Name属性测试列表是否按ASC排序.所以我就是这样的

Assert.That(people.All(....), "list of person not ordered correctly");
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个lambda来检查列表中的每个Person的名字是否少于列表中的下一个人?

Jon*_*eet 5

这是Jared解决方案的替代方案 - 它几乎相同,但使用foreach循环和布尔变量来检查这是否是第一次迭代.我通常发现比手动迭代更容易:

public static bool IsOrdered<T>(this IEnumerable<T> source)
{
  var comparer = Comparer<T>.Default;
  T previous = default(T);
  bool first = true;

  foreach (T element in source)
  {
      if (!first && comparer.Compare(previous, element) > 0)
      {
          return false;
      }
      first = false;
      previous = element;
  }
  return true;
}
Run Code Online (Sandbox Code Playgroud)